{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Perturbation Experiments\n",
    "This notebook creates perturbations of existing networks and features and writes them back as separate containers. Those can be trained afterwards.\n",
    "We define a network perturbation as swapping a certain percentage of edges in the network. Similarly, we define feature perturbations as exchanging node features of two nodes."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "import networkx as nx\n",
    "import h5py, os, sys\n",
    "import random\n",
    "\n",
    "sys.path.append(os.path.abspath('../EMOGI'))\n",
    "import gcnIO\n",
    "\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns\n",
    "plt.rc('font', family='Times New Roman')\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Load some data for perturbation"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Read data from: ../data/pancancer/rev1_container_all_networks_CNA_separated/CPDB_multiomics_cnaseparate_samesplit.h5\n"
     ]
    }
   ],
   "source": [
    "input_data_path = '../data/pancancer/rev1_container_all_networks_CNA_separated/CPDB_multiomics_cnaseparate_samesplit.h5'\n",
    "network_name = 'CPDB'\n",
    "data = gcnIO.load_hdf_data(input_data_path, feature_name='features')\n",
    "adj, features, y_train, y_val, y_test, train_mask, val_mask, test_mask, node_names, feature_names = data\n",
    "print(\"Read data from: {}\".format(input_data_path))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Network Perturbations\n",
    "We start by perturbing the underlying PPI networks to various degrees. We do so using the networkx package."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "False\n"
     ]
    }
   ],
   "source": [
    "adj_names = pd.DataFrame(adj, index=node_names[:, 1], columns=node_names[:, 1])\n",
    "G = nx.from_pandas_adjacency(adj_names)\n",
    "print (nx.algorithms.connected.is_connected(G))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Tried 73134 swaps and succeeded with 63217\n",
      "Created network with 25.07% swapped edges\n",
      "Tried 176532 swaps and succeeded with 125553\n",
      "Created network with 49.79% swapped edges\n",
      "Tried 373239 swaps and succeeded with 189651\n",
      "Created network with 75.20% swapped edges\n",
      "Tried 2521890 swaps and succeeded with 241225\n",
      "Created network with 95.65% swapped edges\n"
     ]
    }
   ],
   "source": [
    "def _single_edge_swap(G, swapped_edges):\n",
    "    edges = [x for x in G.edges if not x in swapped_edges]\n",
    "    success = False\n",
    "    while not success and len(edges) >= 2:\n",
    "        edge1 = random.choice(edges)\n",
    "        edge2 = random.choice(edges)\n",
    "        if not edge1 == edge2:\n",
    "            success = True\n",
    "            G.add_edge(edge1[0], edge2[0])\n",
    "            G.add_edge(edge1[1], edge2[1])\n",
    "            G.remove_edge(*edge1)\n",
    "            G.remove_edge(*edge2)\n",
    "            swapped_edges.append(edge1)\n",
    "            swapped_edges.append(edge2)\n",
    "    return G, swapped_edges\n",
    "\n",
    "def swap_edges_exact(G, percentage):\n",
    "    H = G.copy()\n",
    "    #n_swaps = int(G.number_of_edges() * percentage)\n",
    "    n_swaps = 10\n",
    "    print (n_swaps)\n",
    "    performed_swaps = 0\n",
    "    swapped_edges = []\n",
    "    while not performed_swaps >= n_swaps:\n",
    "        success = False\n",
    "        while not success:\n",
    "            H_new = nx.double_edge_swap(H.copy(), nswap=1, max_tries=10)\n",
    "            swapped = nx.difference(H, H_new).edges\n",
    "            if not swapped in swapped_edges:\n",
    "                success = True\n",
    "                H = H_new\n",
    "        print (\"swap done\")\n",
    "        performed_swaps += 2\n",
    "    #swaps = nx.double_edge_swap(H, nswap=n_swaps//2, max_tries=n_swaps*10)\n",
    "    print (\"Tried {0} swaps and succeeded with {1}\".format(n_swaps, nx.difference(G, H).number_of_edges()))\n",
    "    return H, nx.difference(G, H).number_of_edges()\n",
    "\n",
    "\n",
    "def swap_edges(G, percentage):\n",
    "    H = G.copy()\n",
    "    n_swaps = int(G.number_of_edges() * percentage)\n",
    "    swaps = nx.double_edge_swap(H, nswap=n_swaps//2, max_tries=n_swaps*100)\n",
    "    print (\"Tried {0} swaps and succeeded with {1}\".format(n_swaps, nx.difference(G, H).number_of_edges()))\n",
    "    return H, nx.difference(G, H).number_of_edges()\n",
    "\n",
    "# the API for swaps in nx is annoying so I had to try out\n",
    "# different numbers of attempts to roughly get n percent of\n",
    "# the edges swapped. This is ugly but works at least.\n",
    "# roughly corresponds to 0, 0.25, 0.5 and 0.75 (because not every swap works)\n",
    "swapping_percentages = [0, 0.29, 0.7, 1.48, 10]\n",
    "perturbed_networks = [G]\n",
    "for percentages in swapping_percentages[1:]:\n",
    "    perturbation, n_success = swap_edges(G, percentages)\n",
    "    perturbed_networks.append(perturbation)\n",
    "    print (\"Created network with {0:.2f}% swapped edges\".format((n_success/G.number_of_edges())*100))\n",
    "swapping_percentages = [0, 0.25, 0.5, 0.75, 1]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [],
   "source": [
    "rand_degree_graph = nx.generators.expected_degree_graph(w=[i[1] for i in G.degree], selfloops=False)\n",
    "_ = nx.relabel_nodes(rand_degree_graph, pd.DataFrame(node_names).to_dict()[1], copy=False) # they should have the node names\n",
    "swapping_percentages.append('Random_degreepreserved')\n",
    "perturbed_networks.append(rand_degree_graph)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "True"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "nodes = pd.DataFrame(node_names, columns=['ID', 'Name'])\n",
    "nodes_shuffled = nodes.sample(frac=1)\n",
    "nodes_shuffled.index = np.arange(nodes.shape[0])\n",
    "rand_power_graph = nx.generators.powerlaw_cluster_graph(n=int(G.number_of_nodes()), m=int(G.number_of_edges()/G.number_of_nodes()), p=0.1)\n",
    "_ = nx.relabel_nodes(rand_power_graph, nodes_shuffled.to_dict()['Name'], copy=False) # they should have the node names\n",
    "swapping_percentages.append('Random_powerlaw')\n",
    "perturbed_networks.append(rand_power_graph)\n",
    "nx.algorithms.components.is_connected(rand_power_graph)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<AxesSubplot:xlabel='Cancer_Gene', ylabel='Degree'>"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "cancer_genes = node_names[np.logical_or(np.logical_or(y_train.reshape(-1), y_val.reshape(-1)), y_test.reshape(-1)), 1]\n",
    "degrees = pd.DataFrame(pd.Series({node: degree for (node, degree) in rand_power_graph.degree()}, name='Degree'))\n",
    "degrees['Cancer_Gene'] = False\n",
    "degrees.loc[degrees.index.isin(cancer_genes), 'Cancer_Gene'] = True\n",
    "sns.boxplot(data=degrees, x='Cancer_Gene', y='Degree', showfliers=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlcAAAR2CAYAAAARG5ItAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy86wFpkAAAACXBIWXMAAAsTAAALEwEAmpwYAACoWUlEQVR4nOzdebwcVZ3///c7BDAgSySBAAYuW1QIuAUZRBgQogL6k0FBBkEWMSo6ypfIyOAoKIi44IpbRGVzRFBUFMYFkEVcw6AGBFlCANlyiYRNQlg+vz/Oqdy6le6k70317Xu7X8/Hox/dfWo7p6q769PnnDrliBAAAADqMa7TGQAAAOgmBFcAAAA1IrgCAACoEcEVAABAjQiuAAAAakRwBQAAUCOCKwBjhu3xtg+wfZXtb3dg+5vYvsP2z217pLcPYGwguALGKNun2l5sOyqPZ3L6rba/Y3tmp/NaB9sbSZoj6euSdpPUieBmF0l9kl4jaYMObH/YbL/M9iU5OLzN9idtT+h0voBuRHAFjFERcYKk5ykFHIXTJX1A0lclPSvpYEm/sP0N2239vtvezHZfu9YfEQ9ExJGSPtOubRRsr2v7JQ0m/ULSzyR9MSIebHc+6mL7DZJ+I+nyiNhC0suVAsXLba/d0cwBXYjgChjDIuJZST8uJR0fEZ+LiP+SNF3S93L6UZKObnN2PqhUq9NuC0dgG++U9JJqYkQ8HBF7R8T7RyAPtbA9VdJ3JF0REZ+VUjkkvV3Sv0j6dAezB3Qlgitg7Ptno8SIeErSeyQ9mZPaFlzZ3l3SO9q1/oqn27ly29tK+lA7tzHCTpS0jqRBfdQi4m+S/ijpXbZf1ImMAd2K4AroYhGxSNIN+e0W7diG7ZdJukjS6u1Y/0iyvYWkSySt1+m81MH26pIOyG9/02CW3yn1XTtqxDIF9ACCK6D7TczP91Un2H6b7V/nTs4P2/6x7e0q80y1/Rnbj+T3B9q+1/Y824dJOkdS0TH6O7mz9OW2/2D72aKjfWl902wvKnXAP6s0bZzt/W3/1vZJtte3/SPbj9g+rkH+V7P9Ydv32H4s53/rBvOtly8A+FMua3/u3P2K0jwvk/R9DXRU/2Quy82leXaz/V3bf2u0o20/L2/netsLbN9t+0zbmzWYd5rtc2xflt+/3PaVth+3/Tvb0xsss7vtB23/sMWrFXeVtK6kJyPingbT5+XnPVpYF4BWRQQPHjzG8EPS7pIiP8ZXpu2i1LE9JJ1cmfZNST+RNDG/31+pCfFhSdvntI9JWlRa/26SHiy9f3ue78r8fvfKNmYW81bSLekbedpZOW17SdeU1n2SpP+V9Gh+f3ee7/D8/mylPmWLJd1bWq5f0talbT1H0p8l3SFpo5z2aklP5WUnVfJ2Vl7P4ZX0z0j6W562oMFx2ELSbZLOkDQhp71G0iN5OzvmtDUkfUHSE3ldV+b99Kiku5SaPUPSLZJWq2zjS6VybtDCZ2N2nvf2JtPfnKc/Vd0WDx48hv+g5groLhMlyfYatt+oVBNjpRP4qcVMto+Q9HpJb42IhyQpIi6SdKZSTccZOe0jknYurf9tkjaV9BalTtIXryQ/lzdKjIhQapIqp82LiF0lfTcnHaB01eOWkr6m1Heo7PWSfq0UHG0i6Y1K/c8mSfpyab7XStpB0tUR8UDe1hV52fWUAtCViogPSDqi0bRci3ROfntMRDyRl/mFpPfn7Vxke92IWCrpuJwuSVPzeqdHxGZKFyIslbSNpB0rm5qj1Lz3qUhNviszOT8vbjL94fw8Xl3SFAqMBgRXQHf5ou1rlGo9vqjU3+qdkmYWJ/zsA5J+GRGPVJb/S37ezXZxYp5fmv7ZiHgyIi6IiEMion9FmYl0NWMzzzRJL7Z3Y0RcHBH9EfHuiPhWZb5LI+JLEfF03tbFSrVdkvQa25vm13crBSvXV5b/e34eSlDRrLx7S3qVpJ8U+Sk5R6lJ9vnKnf5zgLUgT39M0qERcWeedrNS4CdJg5oTcwC6S0R8sMX8Fk2cDS96UKrVLDynxXUCWInxnc4AgFod2uDkPkgejHNbSRuV+xNlayo1A0qpRqU/Ip4uuvdExF9rzm8jRf5Xtq1GwdmXJZ2i1PT2Ekn3RMT/2X5upKsnZXsTSUcqNQ1KQ/uT+VST9IPz84LqhIh4xvbPlGqn9lUai6y8rociolqWon/cqg7yuTQ/N+uftUbp9T9WcVsAMoIroPcUtSHfHEINyJgQEf+0fZekrSWtX0p/yvYLJZ2Qk87M8xxW06a3LTbVZPpN+blcE9VsXmkgwFzVUejvz8/NBgpdPz8/HhFLVnFbADKaBYHeU/ypmtbRXLRPMcjo4iLB9mylzvFfjIi3RcTVNW9zrfy8aZPpD+XnajNsuxXNvJs0mb5Rfv7zCOQF6BkEV0DvKZqcZtqe2GgG29vZ3nAE81Snokx/kiTbb1e60u99ETG3Tdu8PT+/oMn0IqCd12R6u/xKqWlwQ9uTGkwvhq24dOSyBHQ/giugx0TEAqVO3mtL+nr1noO2V1Pqt/Tw8ks3X+0Kpj2R1/u8SnrRkXwN1cT2ukpX2V0dA+M6vTs/39lkserv4IrK0sxP8vPrmgSsU/PzBcNY97DlCxaKWyDt1mCWnZU6tY9ovoBuR3AFjH3l/jTPbXGZz+XnAyRdZntP25vafqWkH0q6LSKelNLAnsVCttdaflWScgClxlecFUHN0Xkdq9t+n1KncknaKqcX/YuK7TXb1rLsNEibpdTRfXYprVjf7Dzo6Op5KIq9c/ok21vnQURXVpYiEKyORn+20jhaaypdnVm1t9IVgOUaomL9K+r7Omg7tqfbvtb2J1awTNVHJT2uNIzGoHVJepmkMyPi1iGsD8BKEFwBY1gOfA4oJR3cbN6KL0j6UX69h6TLlIYmuFap39B/l+Z9ZQvrvzE/75LzNdt2caXb9/PzybbvVxqE9OWSPp/TX2H795J2tj1eUjFq+j6212+wrXuUrrQ70Pa7nW7xIttvUuqwflCl+e/n+fltSv2xHsxlviinnyTpXA1cnVgty6x8haWUBmyVpCm2lzUB5mEu9lfq53WS7bfkZdew/WmlscMOy+N7FYr9Os12MWSC8j7YIb/dtVL2d+Xlji8vsyIRcbtSwLev7UPyNjaTdJ7S8f5/rawHwBB0ehRTHjx4DO+hNCjoIxoYsbt4PKA8cvpKll9N0jFKwcSTSqOcf0HSeqV5LtTACO/FY7nRvpUG7rxCqYbku5K2KU1bXWkQ0IeVAqP/Vvpjd7hSQHOoUu3NTnme8raekPSOBtvbWmm08tuUhhC4Xmlk9W0azLu2pG8pBT53Kw3yKaUmsUVKgeWU0vwTlALCfyo19+2U039V2RdPSjqtsq3N8rbuy9v6cz5OG1Tmu6VSzseVapgOzfksT1uogVH098x5/rEkD/HzMlNpANL5SuOfzZa0Rqc/xzx4dOPDEcPpXgAAAIBGaBYEAACoEcEVAABAjQiuAAAAakRwBQAAUCOCKwAAgBqNmhs3T5o0Kfr6+jqdDQAAgJW67rrrHoyIyY2mjZrgqq+vT3Pntuu2XwAAAPWx3eyWWjQLAgAA1IngCgAAoEYEVwAAADUiuAIAAKjRqOnQPlL6jr9kubQFp+3bgZwAAIBuRM0VAABAjQiuAAAAakRwBQAAUCOCKwAAgBoRXAEAANSI4AoAAKBGBFcAAAA1IrgCAACoEcEVAABAjQiuAAAAakRwBQAAUCOCKwAAgBoRXAEAANSopeDK9m62Ly+9P8j2/bbvtL2+7XG2T7R9iO3D8jzLpQEAAHS7loKriLha0gRJsm1JW0XElIjYPCIWSzpY0n0RcZ6knW1PbZIGAADQ1YbSLLg0P0+XdKDtG22/NKftI+mm/PpWSXs1SQMAAOhqQ+5zFRHzIuLFkt4l6bxckzVJ0kN5liWSpjRJG8T2LNtzbc/t7+8fTv4BAABGlWF3aI+IayRdJWmipH5Ja+VJ60ha1CStuo45ETEjImZMnjx5uFkBAAAYNYYcXOWaqsLdEfEPSZdK2iGnTZN0WZM0AACArtbq1YLbS9rK9nRJx9r+qe1jJF2QZzlf0pa2j5R0bUTMb5IGAADQ1ca3MlNEzJNUXO13g6TTK9OfkXTCytIAAAC6HYOIAgAA1IjgCgAAoEYEVwAAADUiuAIAAKgRwRUAAECNCK4AAABqRHAFAABQI4IrAACAGhFcAQAA1IjgCgAAoEYEVwAAADUiuAIAAKgRwRUAAECNCK4AAABqRHAFAABQI4IrAACAGhFcAQAA1Gh8pzMwGvQdf8lyaQtO27cDOQEAAGMdNVcAAAA1IrgCAACoEcEVAABAjQiuAAAAakRwBQAAUCOCKwAAgBoRXAEAANSI4AoAAKBGBFcAAAA1IrgCAACoEcEVAABAjVq6t6Dt3SSdGBF72h4n6cOSbpe0WkSc3Wpae4oAAAAwerRUcxURV0uakN8eLOm+iDhP0s62pw4hDQAAoKsNpVlwaX7eR9JN+fWtkvYaQtogtmfZnmt7bn9//xCzDgAAMPoMp8/VJEkP5ddLJE0ZQtogETEnImZExIzJkycPIysAAACjy3CCq35Ja+XX60haNIQ0AACArjac4OpSSTvk19MkXTaENAAAgK7WUnBle3tJW9meLul8SVvaPlLStRExfwhpAAAAXa2loRgiYp6k8tV+J1SmP9NKGgAAQLdjEFEAAIAatVRz1Yv6jr9kubQFp+3bgZwAAICxhJorAACAGhFcAQAA1IjgCgAAoEYEVwAAADUiuAIAAKgRwRUAAECNCK4AAABqRHAFAABQI4IrAACAGhFcAQAA1IjgCgAAoEYEVwAAADUiuAIAAKjR+E5nYCzpO/6S5dIWnLZvB3ICAABGK2quAAAAakRwBQAAUCOCKwAAgBoRXAEAANSIDu2riE7uAACgjJorAACAGhFcAQAA1IjgCgAAoEYEVwAAADWiQ3sb0MkdAIDeRc0VAABAjai5GiGNarMkarQAAOg2ww6ubO8i6QeSQtIekvaVtFDSehFxRp5ndjUNAACgm61Ks+DukjaOiI0lTZK0QUScK2mi7Z1sv6qaturZBQAAGN2GFVzZ3lDSfpLm254paR9JN+XJf83vG6UBAAB0tWE1C0bEQkk72t5OqWnwakkP5clLJE2R5AZpg9ieJWmWJG222WbDyQoAAMCoskpXC0bEjZK+JWmqpLVy8jqSFknqb5BWXX5ORMyIiBmTJ09elawAAACMCsNtFnTp7VJJp0jaIb/fVtLPJF3aIA0AAKCrDfdqwTfbfq+kiyVdERHX297D9pGSFkfE1ZLUKA0rxyCkAACMXcPtc3WhpAsraac0mG+5NAAAgG7GIKId1mxwUQAAMDZx+xsAAIAaEVwBAADUiGbBMYJO7gAAjA0EV2MYARcAAKMPzYIAAAA1IrgCAACoEc2CXYamQgAAOouaKwAAgBpRc9UDqM0CAGDkUHMFAABQI2quehS1WQAAtAc1VwAAADWi5grLNLuJNDVaAAC0juAKK0UTIgAAraNZEAAAoEbUXGFYqM0CAKAxgivUhoALAACCK7RZs07yVQRhAIBuQXCFUYFaLwBAtyC4wqjVaq2XRCAGABg9CK7Q86g1AwDUieAKXYG+XQCA0YLgCj2l1SCMYA0AMFwEV8AqoF8YAKCK4AoYIfTtAoDeQHAFdNBQar6qGgVmrQZw3KQbANrHEdHpPEiSZsyYEXPnzm37dlblZAb0olUJuKitA9CtbF8XETMaTaPmCsAKdeoPyUjVrhEAAqhb22uubM+WtFDSehFxRrP5qLkCgLER2BGQAh2subL9KkkbRMTptj9se6eI+H07twkAY9lY/QM4VvM9UupuXq97GyO1naEE5qvSh7TTwX5ba65snyrppog41/abJO0QESeWps+SNCu/fYGkv7UtMwMmSXpwBLYzGvVy2aXeLj9l7129XP5eLrvU2+UfibJvHhGTG01od5+rSZIeyq+XSJpSnhgRcyTNaXMeBrE9t1k1Xrfr5bJLvV1+yt6bZZd6u/y9XHapt8vf6bKPa/P6+yWtlV+vI2lRm7cHAADQUe0Ori6VtEN+va2kn7V5ewBGMdvjbR9g+yrb3+7A9jexfYftn9v2SG8fQG9oa3AVEddKWmL7SEmLI+Lqdm6vRSPaDDnK9HLZpVFWftun2l5sOyqPZ3L6rba/Y3tmDZvreNltb5Tz8XVJu0kaqeCmXPZdJPVJeo2kDUZo+7Ww/TLbl+Tg8Dbbn7Q9oYVFBx1723vYvtz2o7Yft/0b2we1sP0vNPishu2jh12o9uv4577Dern8HS37qBlEFOhFtsdJ+qoGLuw4XdI9kjaUtL+kaTn9TEnvjIhn25iXzSSNi4gF7dpG3s4Jkj4u6eyIOLxN21hX0pYR8adK+nqSzpd0S0S8vx3bbgfbb5B0oaQTIuKzuRyXKP1BnhkRj7e4nkMknZ2Xe1qD+91+NiJmN1lukqQ7NdDNo7BI0mYR8c+hlAfodgRXQIfZ3kfpRClJq0fE0zl9dUnnSnpLnvYfKxorroZ8fFnShRFxZbu2kbdzlKRvqL3B1XGS+iPirHasfyTZnirpRkm/joh9SukvkHSTpK9FxEprj2xPlnSrpC9K+kpE3G/7ZUo1iUXH39dGxC8aLHuKpAlKx63ssYj4+zCKBXS1dve5ArByDf/1R8RTkt4j6cmc1LbmF9u7S3pHu9Zf8XQ7V257W0kfauc2RtiJShcEDeqjFhF/k/RHSe+y/aIW1nOwpA9FxEci4v68jv+TtI+kf+R5DqkuZHsdSYdLOjUibq48CKyABgiugFEsIhZJuiG/3aId28i1FxdJWr0d6x9JtrdQqgVcr9N5qUOuvTwgv/1Ng1l+p9R37agWVrdUqQl6kIjoV2oqlKRGY/YcLekRSa/J/eYArERPBVe2Z9s+1PZ7O52XdrO9ju0Lbc+3/ZWc1mf7Xtv3296r03lsN9u75LLeZ/uFY/j4T8zP91Un2H6b7V/nTs4P2/5xLuODthfYfsD2f9r+H9vP5n1xTP4czLN9mKRzlJp8JOk7ubP05bb/kJcJ21Ha5jTbi0odms8qTRtne3/bv7V9ku31bf/I9iO5qa6a/9Wc7t5wj+3Hcv63bjDfevkCgD/lsvbnzt2vKM3zdkl/1kBH9TPy8b+3lLdv5Q7cy+3LPM/z8nauz/vvbttn5v5o1Xmn2T7H9mX5/cttX5k7if/O9vQGy+yej80P7ZauVtxV0rqSnoyIexpMn5ef32D78ryN59v+qe27bJdr8P4i6d7i+1BZz635+c5Kfp8j6f9JepGk/5H095z3F7SQ9xFje7ei/Pn9QfnY35k/g+Nsn2j7kPyZ7xrlsufv/v35s7vI+WKY6v7oaIZr1OQ8d5TtI2wf59SntWFa20VETzwkvUqpWluSPixpp07nqc3lnSlpbaUOqH+TtKOkDyr16el4/kZoH3xIA/0KR+3xl7S7pMiP8ZVpu0h6Nk87uTLtm5J+Imlifr+/UhPiY5K2z2mXKzX5FOvfTWnU4uL92/N8V+b3uzf4HEX6qRiUbqX+NyHprJy2vaRrSus+SdL/Sno0v787z3d4fn+2pO9JWizp3tJy/ZK2Lm3rOUpB0x2SNsppr5b0VF52Umne30g6K6/n2znta5KmKtVo3Z+nPSppaqVMW0i6TdIZkibktNco1doslrRjTltD0hckPZHXdWXeT49Kukup2TMk3SJptco2vlQq5wYtfDZm53lvbzL9zXn6U5J+k9PeoNRRfbJSh/MNq9+HBuv5cF7P3pX0V0v6g6QFpXxHLvu/d/q7U8lrUX4rNX+Wpx0iaVb589Dp/Lap7DuX0j6lVBu93P7olocan+fOydPeptRfta+aNhJ566Waq32UOn9K0l/z+64VEb+MiMcjXcVzg9LNs18r6U7bb+1s7trP9oaS9pM0P/97GyvHf6Ik2V7D9hslfV/px/FKSacWM9k+QtLrJb01Ih6SpIi4SOmqwrWVAgQpBSXlsh4vaVOlH53vSLp4Jfm5vFFipF+q31XS5kXErpK+m5MOUGqG2lLphHaiBnu9pF8rBUebSHqjUv+zSZK+XJrvtUrj5V0dEQ/kbV2Rl11PKQAtLC29LmqnbpW0l6SHJX00pz2V0yRJuRbpnPz2mIh4Im/nF5Len7dzke11I2KppONyupQCtyMkTY+IzSRNz/nYRunHvmyOUgD4qUhNvitTNNMtbjL94fw8XikIV0T8JCKejtTcd5OkxQ2+D1V7KdWC/bycGBFXRMQrIqJP0maSTla628ZzJJ3bZF2dUhz76ZIOtH2j7ZfmtPL3v/g8dJOlkhQRv5VSjbBSIP2UGu+PrtDgPLePBmphb8zvX9Mgre16Kbha4a14upVTZ9S7IuLOiHi1pFdI+k/b01ay6JgWEQsjYkelE/iXNHaO/xdtX6NU6/FFpR+Mdypdbv9Eab4PSPplRDxSWf4v+Xk3p75Ud0iaW5r+QqVamQsi4pB8Am4qVjz0wzNN0ufn5xsj4uKI6I+Id0fEtyrzXRoRX4p8dWREXKxU2yWl/j2b5td3K508rq8sX3Smbta/qhieoDjexXACUqp9KX8G9laq3fxJkZ+Sc5QCtecrd/rPAdaCPP0xSYdGxJ152s1KgZ+UApJlcgC6S0R8sEmeq4omzmZDHZSPz6Dfc9ubS/p5RCytfh/KTUO2X6xU9ves6HhHxN0R8RFJL5f0gKTVJH25xebNEZP38YslvUvSeTl/Y+X7X5ddJV0tNd0fXaU4zyn9aaoe544c+14Krnr1VjyHSvpI8SbS1T0fV/o30/Ui4kZJ31KqXRgLx//QiNg1IvoiYvOImBkRc8onfKdOxdtKep3tm8sPpZqpRflxsKSLKsHC15Rqktqp2N5fVzJfo+DsyxqogXiJtOyKtudGxOelZaOs/7dSk5XU/HdsjfxcHO9+DXTaH6fBn4GD8/OC6koi4hkN3F1i39Kkp/LzQ3mesqLWrJVBPlek2BfNTohrlF6XPyNWaib+RHnm0veh/Bn4nKRPRsQ1rWQoIoqa32eVaude3spyIy2X5yql2uBe+/2fKWnQkBqV/dFtivNco+PckWPfS8FVz92Kx/Z+kn4UEY/a3qj0j2WCKk063aby72yppFPUPce/qA35ZkS8sPLYIiImRcQkSYqIexrsi5UFPR2Tq/fvym/XL6U/5XRRwjmSTlP6V/7Llaxuan6eJukypd+AoiP3+JxW2LbYVJN1FU1K5ZqoFQ0SWAQ6q1pLcH9+XrvJ9PXz8+MaXIt1iKQzI+LpyndfKn0GbL9fqa/Yfw8lUzngLZp/txrKsu1WKevdEfEPDf79Lz4PXSmXf42IeLL0vlDsj65RPs8pBZTb5UnF7/zPG6S1Xc8EVzE6b8XTNk63pPicpItt/0XpUu0/2P6gpDsi4t6OZrD93ux0/7rZkq7qsuNfjKrdtGnX9hSlTuJS6vRcuCoilrQrYzVZmJ8XFwn5OP6vpC9GxNsaHT/b2yud6NfPSZPz8b42IuYrjcxeBEdP5rRC8c92UzVWNCtUm2HbrWjm3aTJ9GJohFslbWV7uu1PKnVQ/5Xtm5QuNKh+H5bY/ldJ/6bUMX04I/8XAcpjw1i2VsWxd7pC81inqyWPkXRBnuV8SVtWPg9doVJ2KXX9+ENplkb7oys0OM/tKemPTlcObyzpOxFxVzVtRDI33J7wPHjwqOehFVwt2GT+vjzvY8pXCjaYZzvlq8Ty++Wu+KvMf6UaXC24omU1cNXfWZX0k3L6SU221XC50vS/5umb5vdvz+/fUJnvrJx+eCvplX23oJJ+SU7/UZM8vStPP7vBcbuywfxN8zDEz8a6SleAhkpXRZamn5GnDelqMKVuAVc3+/y0uI7XKtXQbTjcdfDg0a2Pnqm5ArpFpHv/3a3UVPT16rgt+UqhUzRwJVlLq13BtCfyep9XSS86kq+hmjjdE3AbpSsDi3Gd3p2f72y81HK/YysqSzM/yc+vs92oT0rRxDii//wjXbDwvfx2twaz7KzUHNhyvvLFLF+RdGDkK00r01sdrHa6pO9FxMKVzgn0GIIroPPK/Wme2+Iyn8vPB0i6zPaetje1/UpJP5R0Wwz0uVj2PbddvfFuobgS8TkNphVBzdF5Havbfp+kI3P6Vjm96NtRbK/ZtpZlp0HaLKWO7uUbCBfrm+006OjqeSiKvXP6JNtb56sjV1aWIhCsjkZ/ttKVlWsqXZ1ZtbfSFYCXltKK9Y9ffvZlBm0nN9tda/sTzRZo4KNKfareVl2XpJcp9a26tZS+mu1v277M9iaVZaYpdWg/JPItcErTJtg+VqlzcJG2lu3lOuU73Th6P0nHDqEcQO/odNUZDx69/FAKHM7SQLPg0UNY7oel5cqP6yStWZr3VaVpRzVZ36dVGqhUKbgpBtI8ubT8/Uo1Ymcrje1UpP9e0iuVAo2f5bQbJK3fYFszlTpVP6FUK7V6Tn+T0oCn+1Xm/0RpO4vy9s9RGkMrlIYp+K2k5+T535PTz83vZ2lg8NFZedozkl5Q2c5LlPpWLVEeaFApGPu00uCiW1bm/1he10KVBgTN++D/8rRzKssUzXihFgYRLS33VqWrEw/J7zeT9CelgG+tyrwzStuYXUrfIR+/x5QGki0/Hsr7JJQHcFUaauEfSn3fysdpO6Xx1LZsNf88ePTao+MZ4MGjVx9Kg4I+ouWDoweUR05fyfKrSTpGaWC8J5U6sH9B0nqleS7UwAjvxWO50b6VxoK5QqmG5LuStilNW11pCIeHJd2jdGXZOKW+U39VqukYL2mnPE95W09IekeD7W2tNP7YbfkEfr1SkLlNg3nXVqptWazUHHpMTt9ZKdi6TNKU0vwTlAZf/adSc99OOf1XlX3xpKTTKtvaLG/rvrytP+fjtEFlvlsq5XxcqYbp0JzP8rSFGhhFf8+c5x+ryWjpKzjeM5UGIJ2vFLjOVroqrDrfBKVg8x5J2+W0TTR4pP5mj99X1vUepc7yS5Su4jxPqcZypX0DefDo5UdxaxAAAADUgD5XAAAANSK4AgAAqBHBFQAAQI0IrgAAAGpEcAUAAFCjFQ1+N6ImTZoUfX19nc4GAADASl133XUPRsTkRtNGTXDV19enuXPndjobAAAAK2W72S25aBYEAACoE8EVAABAjQiuAAAAakRwBQAAUKNR06F9pPQdf8lyaQtO27cDOQEAAN2ImisAAIAaEVwBAADUiOAKAACgRgRXAAAANSK4AgAAqBHBFQAAQI0IrgAAAGpEcAUAAFAjgisAAIAaEVwBAADUiOAKAACgRgRXAAAANSK4AgAAqFFLwZXt3WxfXnp/kO37bd9pe33b42yfaPsQ24fleZZLAwAA6HYtBVcRcbWkCZJk25K2iogpEbF5RCyWdLCk+yLiPEk7257aJA0AAKCrDaVZcGl+ni7pQNs32n5pTttH0k359a2S9mqSBgAA0NWG3OcqIuZFxIslvUvSebkma5Kkh/IsSyRNaZI2iO1Ztufantvf3z+c/AMAAIwqw+7QHhHXSLpK0kRJ/ZLWypPWkbSoSVp1HXMiYkZEzJg8efJwswIAADBqDDm4yjVVhbsj4h+SLpW0Q06bJumyJmkAAABdrdWrBbeXtJXt6ZKOtf1T28dIuiDPcr6kLW0fKenaiJjfJA0AAKCrjW9lpoiYJ6m42u8GSadXpj8j6YSVpQEAAHQ7BhEFAACoEcEVAABAjQiuAAAAakRwBQAAUCOCKwAAgBoRXAEAANSI4AoAAKBGBFcAAAA1IrgCAACoEcEVAABAjQiuAAAAakRwBQAAUCOCKwAAgBoRXAEAANSI4AoAAKBGBFcAAAA1IrgCAACo0fhOZ2A06Dv+kuXSFpy2bwdyAgAAxjpqrgAAAGpEcAUAAFAjgisAAIAaEVwBAADUiOAKAACgRgRXAAAANSK4AgAAqBHBFQAAQI0IrgAAAGpEcAUAAFAjgisAAIAatXRvQdu7SToxIva0PU7ShyXdLmm1iDi71bT2FAEAAGD0aKnmKiKuljQhvz1Y0n0RcZ6knW1PHUIaAABAVxtKs+DS/LyPpJvy61sl7TWEtEFsz7I91/bc/v7+IWYdAABg9BlOn6tJkh7Kr5dImjKEtEEiYk5EzIiIGZMnTx5GVgAAAEaX4QRX/ZLWyq/XkbRoCGkAAABdbTjB1aWSdsivp0m6bAhpAAAAXa2l4Mr29pK2sj1d0vmStrR9pKRrI2L+ENIAAAC6WktDMUTEPEnlq/1OqEx/ppU0AACAbscgogAAADVqqeaqF/Udf8lyaQtO27cDOQEAAGMJNVcAAAA1IrgCAACoEcEVAABAjQiuAAAAakRwBQAAUCOCKwAAgBoRXAEAANSI4AoAAKBGBFcAAAA1IrgCAACoEcEVAABAjQiuAAAAakRwBQAAUKPxnc7AWNJ3/CXLpS04bd8O5AQAAIxW1FwBAADUiOAKAACgRgRXAAAANSK4AgAAqBEd2lcRndwBAEAZNVcAAAA1IrgCAACoEcEVAABAjQiuAAAAakSH9jagkzsAAL2LmisAAIAaUXM1QhrVZknUaAEA0G2GHVzZ3kXSDySFpD0k7StpoaT1IuKMPM/sahoAAEA3W5Vmwd0lbRwRG0uaJGmDiDhX0kTbO9l+VTVt1bMLAAAwug0ruLK9oaT9JM23PVPSPpJuypP/mt83SgMAAOhqw2oWjIiFkna0vZ1S0+DVkh7Kk5dImiLJDdIGsT1L0ixJ2myzzYaTFQAAgFFlla4WjIgbJX1L0lRJa+XkdSQtktTfIK26/JyImBERMyZPnrwqWQEAABgVhtss6NLbpZJOkbRDfr+tpJ9JurRBGgAAQFcb7tWCb7b9XkkXS7oiIq63vYftIyUtjoirJalRGlaOQUgBABi7htvn6kJJF1bSTmkw33JpAAAA3YwR2gEAAGrECO0d1mzkdgAAMDZRcwUAAFAjaq7GCDq5AwAwNhBcjWEEXAAAjD40CwIAANSI4AoAAKBGNAt2GZoKAQDoLGquAAAAakTNVQ+gNgsAgJFDzRUAAECNqLnqUdRmAQDQHtRcAQAA1IiaKyzT7D6H1GgBANA6giusFE2IAAC0jmZBAACAGlFzhWGhNgsAgMYIrlAbAi4AAAiu0GbNOslXEYQBALoFwRVGBWq9AADdguAKYwrDRQAARjuCK4xarTYpAgAwmhBcoSusSt8umiQBAHUiuEJPaTUIoyM+AGC4CK6AVTCUpksCMQDoDQRXwAih+REAegPBFdBBq9Jpf1UCM666BID2IbgCxqh2XE1J7RoArDqCKwArxJWYADA0bQ+ubM+WtFDSehFxRru3B6Az6r4Ss1cRfAJjX1uDK9uvkrRBRJxu+8O2d4qI37dzmwAwlhF8dl6rtbCrus5WdXJoGGqfh8cR0b6V26dKuikizrX9Jkk7RMSJpemzJM3Kb18g6W9ty8yASZIeHIHtjEa9XHapt8tP2XtXL5e/l8su9Xb5R6Lsm0fE5EYT2t0sOEnSQ/n1EklTyhMjYo6kOW3OwyC250bEjJHc5mjRy2WXerv8lL03yy71dvl7uexSb5e/02Uf1+b190taK79eR9KiNm8PAACgo9odXF0qaYf8eltJP2vz9gCMQbbH2z7A9lW2v92B7W9i+w7bP7ftkd4+gO7S1uAqIq6VtMT2kZIWR8TV7dxei0a0GXKU6eWyS2Ok/LZPtb3YdlQez+T0W21/x/bMIax21Jbd9kZK+fu6pN0k1R3ctFL2XST1SXqNpA1q3n5b2X6Z7UtycHib7U/anlCapeVjb3uK7SUNPnt/t716G7LfbqP2cz9Cern8HS17Wzu0Axge2+MkfVUDF3ycLukeSRtK2l/StJx+pqR3RsSzbczLZpLGRcSCdm0jb+cESR+XdHZEHN6mbawracuI+FMlfT1J50u6JSLe345tt4PtN0i6UNIJEfHZXI5LlP44z4yIx4e4vk9JOq7BpA9GxKdWOcNAjyC4AkYp2/sonSglafWIeDqnry7pXElvydP+o51jyNn+sqQLI+LKdm0jb+coSd9Qe4Or4yT1R8RZ7Vj/SLI9VdKNkn4dEfuU0l8g6SZJX4uIo4ewvomS5knaV9KTlckLImLJquca6A3t7nMFYPj+2SgxIp6S9B4NnABbPoEOle3dJb2jXeuveLqdK7e9raQPtXMbI+xEpQuFBvVRi4i/SfqjpHfZftEQ1vdeSedFxJ8j4ubKg8AKGAKCK2AMiohFkm7Ib7doxzZsv0zSRZLGYl+bQWxvoVQLuF6n81KHXHt5QH77mwaz/E6p79pRLa5vbUnvkzTO9i65WRrAMPXUF8j2bNuH2n5vp/PSbrbXsX2h7fm2v5LT+mzfa/t+23t1Oo/tlk8S99u+z/YLu/D4T8zP95UTbe9q+9HcMfkZ2/+0fY3tB4t9keebavszth/J7w/Mn495tg+TdI6komP0d3Jn6ctt/8H2s0Vn59J2p9leVOoEfVZp2jjb+9v+re2TbK9v+0e2H8lNdYPYXs3prg732H7M9o9tb91gvvXyBQB/ynlfmjt372T7RNuH2P6IpO9roKP6F2w/YPvm0np2s/1d2w0HMrb9vLyd620vsH237TNzf7TqvNNsn2P7svz+5bavtP247d/Znt5gmd3z8fmh3dLVirtKWlfSkxFxT87/5Xldz5e0e57v30vbGPR9qKzvHUrjEh4n6deSFth+j+3VWshLx5XLn98flMt6Z/6sjSt9Hg7rZF7rVjn2h+ZyL8jfxZk5fdD+6GiGa9TkPHeU7SNsH+f8J6FRWttFRE88JL1K0qn59Ycl7dTpPLW5vDMlra00ztjfJO0o6YNKfXc6nr8R2gcf0kC/wjF3/JVOkJEf4yvTdpH0bJ52cmXaxZJ+ohR8/Zekw5Wa3B6WtH2e52NK484V699NaTTj4v3b83xX5ve7N/h8RfoJGZRupX5TIemsnLa9pGtK6z5J0v9KejS/vzvPd3h+f7ak70laLOne0nL9krYubes5kv4s6Q5JG+W0GyQ9JelxScfmtK9Jmirp6ryew4u0PP0z+TsSSn2LqsdhC0m3STpD0oSc9hpJj+Q87pjT1pD0BUlP5HVdmffTo5LuyscgJN0iabXKNr5UKucGLXw2Zud5by+l/SY/v0HSgaX1Tal+Hxqs7zyl/laPlZYLSb+SNLHT34UWvy9F+S3pQ5Vph0iaVf48dDq/bSr7zqW0TynVOi+3P7rlocbnuXPytLcp9Uvtq6aNRN56qeZqH6VOnpL01/y+a0XELyPi8Yj4p9IJZ6Gk10q60/ZbO5u79rO9oaT9JM3P/97G+vGfKEm217D9RqWaGCudwE8tZrJ9hKSdJL01Ih6SNFlpvLlFSjUd50lSRHxE0s6l9b9N0qZKP0bfUQrQVuTyRomRfsF+V0mbFxG7SvpuTjpA6UrILZVOdCdqsNcr1Z5MiohNJL1Rqf/ZJElfLs33WqVx9K6OiAdy2oN52bUkrZnTbpW0l6Tnl5Yt0hQRH5B0RKPy5Fqkc/LbYyLiibzMLyS9X6mZ8SLb60bEUqWan+Jqw6l5vdMjYjNJ0yUtlbSN0kmgbI5S896nIjX5rkxxy43FpbSlOW8/0cCdMSQpGnwfBomIQyJie0nPUwoc5+ZJu+fyjYVzxdL8PF3SgbZvtP3SnFb+/i879l2kOPa/lVLNr1Ig/ZQa74+u0OA8t4/S8ZXSxR77KH2eq2ltNxa+MHVZ4a14upXtdSTdFRF3RsSrJb1C0n/anraSRce0iFgYETsqnai/pLF//L9o+xqlWo8vKv2QvFPpcvsnSvN9QNIvI+IR232S7oiIhZI+kqfvYHur/Hp+abnPRsSTEXFBPtH2rygzseKhH55pkl5s78aIuDgi+iPi3RHxrcp8l0bElyJfHRkRFyvVdknSa2xvml/frXRSub6y/N8r74vjvWaDtEKz8u6tVOv5kyI/JecoNck+X7nTfw6wFuTpj0k6NCLuzNNuVgr8JGlQc2IOQHeJiA82yUdV0cTZ8KIHpVrNwmrV70OzpqGIWBoRv1QK0L+Qk3eXdHCL+eq4vC9fLOldks7LAfJY//4P1a5KNbXN9kdXKc5zSrXW1ePckWPfS8FVr96K51ANnFgVEX9XGktouX4f3SgibpT0LaVahLF8/A+NiF0joi8iNo+ImRExp3zCdxqMc1tJr8v9iX4v6f359fFKZf6n0olT5WUj4q8jUIZieyvbVqPg7MsaqJl4iSRFxP9Jem5EfF5Ko6xL2lzSq/N8z8nPxfEuX/FW/Qw81SQvRVCxoDohIp7RwF0n9m2wrofyPGVF/7gJWjXFvmh2olyj9PofxYvS92HLFa08Ip6NiGMk/TAnHTS8bHZORFwj6SqlWt9e+/2fKekX5YTK/ug2xXmu0XHuyLHvpeCq527FY3s/ST+KiEdtb1T6xzJBlaabblP5d7ZU0inq/uNf1IZ8MyJeKOnciNha0osiYouImKTU7+aijuVwmHK1/1357fql9KecLlY4R9JpSs1kv8yTp+bnaZIuUxqEVZW0ldm22FST6UVTU7kmakWDBxYB5qrWHtyfn9duMv31+flxSes1+D60Gkwfr1SerVY242hRKevdEfEPDf79b/XYj0m5/GtExJOl94Vif3SN8nlOKaDcLk8qfud/3iCt7caPxEZGg4i41vYeHl234mkb20cr9f9YZHsNpQ7C+9n+vqTfRsS9Hc1g+73Z6arAiyVdERHX98DxL77P02xPUeoMLi2/L8bqmEULJW2tUj8j27OVxmc6QGncr0s1EHxNzsf72oiYb/sOpeaSXYu0FrZZ/OPdtMn0ornhkdaLUYu/5OdNJMn29pK2ylciHqqBYRrGKV1QMHE4n4GIuMX2XUpNnKNWpfyvtb2HUgB1QZ7lfEknlz8PHcpq7cplj4gblLp+/KE0y7EN9kdXaHCe+7ykP9p+u1Lz32kR8YztQWkjkbeeCa4kKSJO6XQeRkpEfEXSVyrJH+9EXjohIi5Uui1IOa3bj3/R5DRT6RL9z0qD94Xt7WxvmPthjTVFc8afJCn/WH5G0v8XEUUH7KkeGALiBzF4JPaiRumaaH2E9tslvSA/Gil+Q+e1uL66/EqpBmpD25MiYp4Gauo+6DRu1XskfTwiilqaCxuspxX3aaCD+6hUKf8NSreLKk9/RtIJI52vkVApuyLi90pdAor3p6uyP7pFk/Nco/nadgeLZnqpWRDoapHu/Xe3UlPR16tXeOUriE5RGpKh5dWuYNoTeb3Pq6QXA3WuoZo43RNwG6UrA4vmvXfn5zubLFb9fRvOvb5+kp9f53R7mKripDaiNQIR8YhSbbSUhtGo2lmpU/sq5cv2eKX+WV9dlfUAvYbgChi9yv1pntviMp/LzwdIusz2nrY3tf1Kpc7Jt5X6Yiz7/ttea/lVScoBlAY6h5cVQc3ReR2r236fpCNz+lY5vejzUWyv2baWZadB2iylju6zS2nF+mY7DTq6eh6KYu+cPsn21k4jza+sLEUgWB2N/mylcbTWVLo6s2pvpSsALy2lFetfUcvAoO3Ynm77WtufWMEyVR9V6lP1tuq6JL1M0pkRcWspfTXb37Z9We78X15mUpNt/IekL4zQBQ9A1yC4AkahHPgcUEpq9VL4L0j6UX5d9LP4u6RrlfoN/Xdp3le2sP4b8/MuOV+zbRdXun0/P59s+36lMaZertTvQZJeYfv3knbONSCvyOn7NBkK4B6lK+0OtP1up1u8yPablJp0Dio1/0mpo6qUgouFeft7aKDD/klKN7guAoNqWWblKyylgRHNpzjd+FiSlIe52F+pn9dJtt+Sl13D9qeVxg47LI/vVSj26zTbxZAJRS1Q0al610rZ35WXO768zIpExO1KAd++tg/J29hMaSyzayX9v8oiL1UaQHVPDR65/VhJ/bb/1wOj96+ZA+XVIuJUARiaGAWjrPLgwWPgoTQo6CMaPFJ2SHpAeeT0lSy/mqRjlIKJJ5U6tn9B0nqleS7UwAjvxeP2BuuaJOkKpRqS70rapjRtdaVBQB9WCoz+W+kP2+FKAc2hSrU3O+V5ytt6QtI7Gmxva6VxyW5TGkLgeklnlbdbmndtpWEFFis1hx6T03dWutz6MuXRyXP6BKWA8J9KzX075fRfVfbFk0odYcvb2ixv6768rT/n47RBZb5bKuV8XKmG6dCcz/K0hcqjnysFPIsk/VhNRlFfwfGeqTQA6Xyl/kazla4Wq843QdJv87HarpQ+VdJPlTrnP6E0PtJpkl7Y6e8CDx5j9VHcGgQAAAA1oFkQAACgRgRXAAAANSK4AgAAqBHBFQAAQI0IrgAAAGo0am5/M2nSpOjr6+t0NgAAAFbquuuuezAiJjeaNmqCq76+Ps2dO6pvXwUAACBJst3s1ls0CwIAANSJ4AoAAKBGBFcAAAA1IrgCAACo0ajp0D5S+o6/ZLm0Baft24GcAACAbkTNFQAAQI0IrgAAAGpEcAUAAFAjgisAAIAaEVwBAADUiOAKAACgRgRXAAAANSK4AgAAqBHBFQAAQI0IrgAAAGpEcAUAAFAjgisAAIAaEVwBAADUiOAKAACgRi0FV7Z3s3156f1Btu+3faft9W2Ps32i7UNsH5bnWS4NAACg27UUXEXE1ZImSJJtS9oqIqZExOYRsVjSwZLui4jzJO1se2qTNAAAgK42lGbBpfl5uqQDbd9o+6U5bR9JN+XXt0raq0naILZn2Z5re25/f/+QMw8AADDaDLnPVUTMi4gXS3qXpPNyTdYkSQ/lWZZImtIkrbquORExIyJmTJ48eTj5BwAAGFWG3aE9Iq6RdJWkiZL6Ja2VJ60jaVGTNAAAgK425OAq11QV7o6If0i6VNIOOW2apMuapAEAAHS1Vq8W3F7SVranSzrW9k9tHyPpgjzL+ZK2tH2kpGsjYn6TNAAAgK42vpWZImKepOJqvxsknV6Z/oykE1aWBgAA0O0YRBQAAKBGBFcAAAA1IrgCAACoEcEVAABAjQiuAAAAakRwBQAAUCOCKwAAgBoRXAEAANSI4AoAAKBGBFcAAAA1IrgCAACoEcEVAABAjQiuAAAAakRwBQAAUCOCKwAAgBoRXAEAANRofKczMBr0HX/JcmkLTtu3AzkBAABjHTVXAAAANSK4AgAAqBHBFQAAQI0IrgAAAGpEcAUAAFAjgisAAIAaEVwBAADUiOAKAACgRgRXAAAANSK4AgAAqBHBFQAAQI1aureg7d0knRgRe9oeJ+nDkm6XtFpEnN1qWnuKAAAAMHq0VHMVEVdLmpDfHizpvog4T9LOtqcOIQ0AAKCrDaVZcGl+3kfSTfn1rZL2GkLaILZn2Z5re25/f/8Qsw4AADD6DKfP1SRJD+XXSyRNGULaIBExJyJmRMSMyZMnDyMrAAAAo8twgqt+SWvl1+tIWjSENAAAgK42nODqUkk75NfTJF02hDQAAICu1lJwZXt7SVvZni7pfElb2j5S0rURMX8IaQAAAF2tpaEYImKepPLVfidUpj/TShoAAEC3YxBRAACAGrVUc9WL+o6/ZLm0Baft24GcAACAsYSaKwAAgBoRXAEAANSI4AoAAKBGBFcAAAA1IrgCAACoEcEVAABAjQiuAAAAakRwBQAAUCOCKwAAgBoRXAEAANSI4AoAAKBGBFcAAAA1IrgCAACo0fhOZ2As6Tv+kuXSFpy2bwdyAgAARitqrgAAAGpEcAUAAFAjgisAAIAaEVwBAADUiA7tq4hO7gAAoIyaKwAAgBoRXAEAANSI4AoAAKBGBFcAAAA1okN7G9DJHQCA3kXNFQAAQI2ouRohjWqzJGq0AADoNsMOrmzvIukHkkLSHpL2lbRQ0noRcUaeZ3Y1DQAAoJutSrPg7pI2joiNJU2StEFEnCtpou2dbL+qmrbq2QUAABjdhhVc2d5Q0n6S5tueKWkfSTflyX/N7xulAQAAdLVhNQtGxEJJO9reTqlp8GpJD+XJSyRNkeQGaYPYniVpliRtttlmw8kKAADAqLJKVwtGxI2SviVpqqS1cvI6khZJ6m+QVl1+TkTMiIgZkydPXpWsAAAAjArDbRZ06e1SSadI2iG/31bSzyRd2iANAACgqw33asE3236vpIslXRER19vew/aRkhZHxNWS1CgNK8cgpAAAjF3D7XN1oaQLK2mnNJhvuTQAAIBuxgjtAAAANWKE9g5rNnI7AAAYm6i5AgAAqBE1V2MEndwBABgbCK7GMAIuAABGH5oFAQAAakRwBQAAUCOaBbsMTYUAAHQWNVcAAAA1ouaqB1CbBQDAyKHmCgAAoEbUXPUoarMAAGgPaq4AAABqRM0Vlml2n0NqtAAAaB3BFVaKJkQAAFpHsyAAAECNqLnCsFCbBQBAYwRXqA0BFwAABFdos2ad5KsIwgAA3YI+VwAAADWi5gqjQqtNigwXAQAY7QiuMGq12qQIAMBoQnCFrrAqfbvoiA8AqBPBFXpKq0EYARcAYLgIroAWceUjAKAVBFdAzYbSV4xADAC6D8EV0EGr0mmfwAwARieCK2CMqrsT/1CWBwA0R3AFdLlVHdKCKzEBYGjaHlzZni1poaT1IuKMdm8PQGesypWYGEDwCYx9bQ2ubL9K0gYRcbrtD9veKSJ+385tAsBYRvC5YqvazF3nNpoFwnXX2FIDPPY4Itq3cvtUSTdFxLm23yRph4g4sTR9lqRZ+e0LJP2tbZkZMEnSgyOwndGol8su9Xb5KXvv6uXy93LZpd4u/0iUffOImNxoQrubBSdJeii/XiJpSnliRMyRNKfNeRjE9tyImDGS2xwternsUm+Xn7L3Ztml3i5/L5dd6u3yd7rs49q8/n5Ja+XX60ha1ObtAQAAdFS7g6tLJe2QX28r6Wdt3h4AAEBHtTW4iohrJS2xfaSkxRFxdTu316IRbYYcZXq57FJvl39UlN32eNsH2L7K9rdHaLPLym57E9t32P65bY/Q9jttVBz7Dunlsku9Xf6Olr2tHdoBNJcv+Dha0nqVSc9KelSpWf0Pks6KiF+OcPZqZ3sjSZ+QtJ+kiZLOjojDRzgPB0i6IL+dHBFjprOv7ZdJOlmpFeAZST+QdFJEPDGEdRwr6fSVzPbliHhvg2W/IOl9DeZ/T0R8pdU8AL2g3c2CAJqIiBMkPU+D/2GdLukDkr6qFGQdLOkXtr9hu63fV9ub2e5r1/oj4oGIOFLSZ9q1jYLtdW2/pMGkXyh1T/jiGAus3iDpN5Iuj4gtJL1c0i6SLre99hBWdVQL8/y0wfYnNVl2kaSzhrB9oCcQXAEdFBHPSvpxKen4iPhcRPyXpOmSvpfTj1Kq5WqnD0rqa/M2pDSocLu9U9JLqokR8XBE7B0R7x+BPNTC9lRJ35F0RUR8VkrlkPR2Sf8i6dMtrudVktZQqjncQtLkyuNkSf+QdHmDxY+R9DVJL6o8XhIR/xxeyYDuRXAFdF7Dk1NEPCXpPZKezEltC65s7y7pHe1af8XT7Vy57W0lfaid2xhhJypdbT2oj1pE/E3SHyW9y/aLWljPvpL+JSJ+HBELIuLB8kPSayX9KH/ulrG9jqTDJZ0aETdXHn+voXxA1+mp4Mr2bNuH2l6uP0G3sb2O7Qttz7f9lZzWZ/te2/fb3qvTeWw327vkst5n+4Vj8fhHxCJJN+S3W7SyjO1dbT9oe4HtB2y/o7ovKvO/TNJFklavN/cjy/Zutq+VdIlSP7Y32j7E9mF5+jjbJ5bTRjvbq0s6IL/9TYNZfifJkk60fXle5vm2f2r7LtvlIPMXkm5o8hnYXNIrJF3YYBtHS3pE0mtyv7lRJx/7y0vvD8qf9zttrz8Wj32rymXPv2/35+/+Itszc/qg/dHRDNeoyXnuKNtH2D6u6ErRKK3deia48sCteM6VNNH2Tp3OU5v9i9K/zemS9rS9o6S3KI0oOyUiLutk5kbI7pI2joiNlQa0HavHf2J+vq86wfbbbP86XwH3sO0fS9pUqbN2n6TPK9VunCZprbwvdshB9rx8ojlH0oS8yu/Yvs325bb/YPtZ22E7Stucln+4Iz/OKk0bZ3t/27+1fVI+sf3I9iO2j2uQ/9Wcbo11j+3HbP/Y9tYN5lvP9qm2/5TL2m/7EtuvKM32mKQXS9ogv99T0kmSPu/UtHawpOcq1eB8IadVt/O8vJ3r8wnqbttn2t6swbzTbJ9j+7L8/uW2r7T9uO3f2Z7eYJndnQLfH9otXa24q6R1JT0ZEfc0mD4vP0/TwDF8qVLT38slHWt7w5z+SuXvQ0TcXFnPm5WaBAf9Lth+jqT/p9QE+D+S/p7z/oIW8j5i8pXoEyQp79et8u/c5hGxWOnY3xcR50naudGxH6vKZZd0Wy53n6RvSrqyyf7oFo3Oc7tFxLclPSDpAKd+pIPSRiJjPRNcSdpH0k359V/z+64VEb+MiMdzf4gblPq5vFbSnbbf2tnctV8+oewnaX7+9zYmj7/tXTRQY/WdyrRvKv1QvCF3cj5C0uskfV3px0aS/j9JV0h6laR1nK4W+4qkjfM84yNiuqTinp9vjYitI2LPiHiF0mdmkIi4RSlYPbOSn+0lXaV0Fdu/5OTvKgU562j5K82sdMKenV+vnfP723KAlU/wV0v6d0mvzWV9i6TXKHX2n5Tz9X+S5irVwknSGRGxtaRTJO2l1FT4FkkHKV0sMKj21vYWSldnrivplfkE9XZJB0r6S/7hlu01nK6c+7OkQyWNz5+xKyVtKWlNSTtJusj2apUyv0kp+NtP6WKGlXlpfm4UWEnS4vy8vaSleT/8JCKejoh+pc/84gbfh6oDlJoEq022r5R0l6Q78/vxeT1/sv3vLeR/JC3Nz9MlHWj7RtvF/it//29V5dh3geLY/1ZKf1qURgN4So33R1docJ7bR+n4StKN+f1rGqS1XS8FVyu8FU+3cuovcVdE3BkRr1aq+v9P29M6nLW2ioiFEbGjpNdL+pLGzvGfKC07gb9R0veVAo8rJZ1azGT7CKWyvTUiHpKkiLhIKeBZV9IZ+R/b/2gg0JGkjyhdyv8WpWDt4pXkp1HnZkUaw+V3lbR5EbGrUkAlpRP2V5UCjq8p9R0qe72kX0uaFBGbSHqjUv+zSZK+XJrvtUqDEV8dEQ/kbV2Rl11P6aq5Rh7Pz8XxvlvSCUV2VfoM5H/35+S3xxTDG0TELyS9P2/nItvrRsRSScfldEmaqhTYTo+IzZROZkslbSNpx0qe5ig1730qN/muTHHfssVNpj+cn8ercjszp6a+n0fE0ur3waWmoVwr9woNDFGxTERcERGvyIHmZkqd3pdIeo6kc5sEah2VP4cvlvQuSeflYztWvv912VXpD0mz/dFVivOcpKe0/HHuyLHvpeCqV2/Fc6jSCVWSlDugflwDNRtdLSJulPQtpRPgWDj+X7R9jaRbJH1R6d/YOyXNrIxn9AFJv4yIRyrL/yU/7ybpEKVanPml6WdKen5EXBARh+Tajaby1YzNPNMkvdjejRFxcUT0R8S7I+JblfkujYgvFbUlEXGxUjOelPr3bJpf360UrFxfWb7oTF0dJ6ywRn4ujne/pGIfjtPgz8DeSrV7P2lQe3OOUpPs85U7/ecAa0Ge/pikQyPizjztZqXAT0oByTL5RLdLRHywSZ6riibOZlfklY/Pst/zfALdX2lcsfL2i+/DlqXkNyudfBoG0qVl746Ijyg1Nz4gaTVJXx6tJ+uIuEapJnWieu/3f6ZSH7tlKvuj2xTnuUbHuSPHvpeCq567FY/t/ZSq+h+1vVHpR3CCKrUO3abyg79UqWloLBz/QyNi14joy/0jZkbEnPIJ36lT8baSXmf75vJD0vFKPx6LJE3L/XTKQdDflZpF26nI68q20yg4+7IGmndeIi1r7ntuRHxeWjbK+n9LenWer9nvWNGvZppSX6JLJRXNjeM1uH/Rwfl5QXUlEfGMBj4v+5YmFVfVPZTnKSv6x03Qqin2RbMAZo3S63JQeIikMyPi6cp3v1hn+dgcIOmHDYLKhiKiaFZ/Vql27uWtLDdSKmW9OyL+ocG//8XnoSvl8q8REU+W3heK/dE1yuc5pYByuzyp+J3/eYO0tuuZ4CpG56142sb20ZI+J+li239RGifpD7Y/KOmOiLi3oxlsvzc73WJltqSruuz4F7Uh34yIF1YeW0TEJKWayT/l+d5cWvaqiFgykpkditx34q78dv1S+lNOV3yeo9Q5/2pJg0atz32+tiotNzkf72sjYr6k8zWw757MaYVti001yVrRX6dcE7Wi21sUgcqq1urcn5+bDRS6fn5+QtIWtqfb/qSkD0v6le2blPpjVb8PS6RlY2jtpMZXCTaVA96i+XeroSzbDsWxzxcRHOt0teQxGmjqPF/SlpXPQ1eolF1KTbx/KM3SaH90hQbnuT0l/dH225X6lX4nIu6qpo1E3savfJbuERGndDoPIyXS7Siqt6T4eCfy0gkRcaEqJ4wuOv7F97Zpv7mIuF9SMeDkhcWf14ioNq2NRguVapgWFwk5KHivpAMiYm5OO7K8UETMkzTVA1cv/iAizipNf8b2p5WGFnisss2i2WBTNVb02ag2w7Zb0cy7SZPpxdAI10dE0ffsg/lR1SiAKq4SXGGTYBOXSXqrlt+XI6449vntDarc4ifXLJ5QXa4bVMquiPi9Bi5QUUScrpXf8mhManKeazTfGSOQnUF6puYK6CJFk9NM2w37T9jernQJ/lhTlOlPkpT/cX5G0vuKwKoNbs/PzYYYKALaeU2mt8uvlJrxNiyuiqwomjkvHeb6m10l2Ir7lJp2/zjMbQNdi+AKGGMiYoFSJ++1JX3dlUHx8mXYp2jgSrKWVruCaU/k9VaHDig6kq+hmtheV6kfz9UxMK7Tu/PznY2XWu53bDh3o/9Jfn5dk4C1qBkY0WaVfMFCcQuk3RrMsrNS36ch58v285WuJB1umaZL+l5EjMTtjIAxheAK6Lxyf5rntrjM5/LzAZIus72n7U1tv1LSD5UGEyw6tJavIltr+VVJGriK7jkNphVBzdF5Havbfp+kolluq5xe9C8qttdsW8uy0yBtllJtyOxSWrG+2U6Djq6eh6LYO6dPsr2100jzKytLEQhWR6M/W9IdSmNUvbPBcnsrXQFYriEq1r+i7hWDtpP7RF1r+xPNFmjgo0rDSrytui5JL1PquH5rKX0129+2fZntZs2J0kCT4BXNZrC9lu3lOuXbXk9pvKtjh1AOoHdEBA8ePDr0UAoczlKqbQlJRw9huR+Wlis/rpO0ZmneV5WmHdVkfZ/O00/O72dLmpBfn1xa/n6lGrGzlcZ2KtJ/rzTg5Hilq3FCqe/L+g22NVOpqesJpVqp1XP6m5RO9vtV5v9EaTuL8vbPURpDK5SGKfitpOfk+d+T08/N72dJ2qj0OpQCuBdUtvMSpb5VSyS9JaetkffNbZK2rMz/sbyuhUqj/xfp4yX9X552TmWZM0pl2aDRsWhyfN6qdHXiIfn9ZkrNpr9WGnm/PO+M0jZmr2Cd10r6xgqmr5aPx+LKcdpOaUiPLVvNPw8evfboeAZ48OjVh9KgoI80CI4ekPT2FpZfTdIxSqMOPynpXklfkLReaZ4LlZqNyuu/vcG6JinVYDyudBXYNqVpqysNAvqw0kjh/60U3B2udEn/oTmg2CnPU97WE5Le0WB7WysN7npbPoFfrxRkbtNg3rWVxmZarNQcekxO31kp2LpM0pTS/BOUBl/9p1Jz3045/VeVffGkpNMq29osb+u+vK0/5+O0QWW+WyrlfFyphunQnM/ytIWSJubl9sx5/rHSCNpD+bzMVBqAdL5S4Dpb6ZL76nwTlILNeyRt12Rdm+Z98ZqVbPM9SqNbL1G6ivM8pRrL8Z3+/vDgMZofjhhO9wQAAAA0Qp8rAACAGhFcAQAA1IjgCgAAoEYEVwAAADUaNbe/mTRpUvT19XU6GwAAACt13XXXPRgRkxtNGzXBVV9fn+bObdedLQAAAOpju9ldI2gWBAAAqBPBFQAAQI0IrgAAAGpEcAUAAFCjUdOhfaT0HX/JcmkLTtu3AzkBAADdiJorAACAGhFcAQAA1IjgCgAAoEYEVwAAADUiuAIAAKgRwRUAAECNCK4AAABqRHAFAABQI4IrAACAGhFcAQAA1IjgCgAAoEYEVwAAADUiuAIAAKgRwRUAAECNWgqubO9m+/LS+4Ns32/7Ttvr2x5n+0Tbh9g+LM+zXBoAAEC3aym4ioirJU2QJNuWtFVETImIzSNisaSDJd0XEedJ2tn21CZpAAAAXW0ozYJL8/N0SQfavtH2S3PaPpJuyq9vlbRXk7RBbM+yPdf23P7+/iFnHgAAYLQZcp+riJgXES+W9C5J5+WarEmSHsqzLJE0pUladV1zImJGRMyYPHnycPIPAAAwqgy7Q3tEXCPpKkkTJfVLWitPWkfSoiZpAAAAXW3IwVWuqSrcHRH/kHSppB1y2jRJlzVJAwAA6GqtXi24vaStbE+XdKztn9o+RtIFeZbzJW1p+0hJ10bE/CZpAAAAXW18KzNFxDxJxdV+N0g6vTL9GUknrCwNAACg2zGIKAAAQI0IrgAAAGpEcAUAAFAjgisAAIAaEVwBAADUiOAKAACgRgRXAAAANSK4AgAAqBHBFQAAQI0IrgAAAGpEcAUAAFAjgisAAIAaEVwBAADUiOAKAACgRgRXAAAANSK4AgAAqNH4TmdgNOg7/pLl0hactm8HcgIAAMY6aq4AAABqRHAFAABQI4IrAACAGhFcAQAA1IjgCgAAoEYEVwAAADUiuAIAAKgRwRUAAECNCK4AAABqRHAFAABQI4IrAACAGrV0b0Hbu0k6MSL2tD1O0ocl3S5ptYg4u9W09hQBAABg9Gip5ioirpY0Ib89WNJ9EXGepJ1tTx1CGgAAQFcbSrPg0vy8j6Sb8utbJe01hDQAAICuNpw+V5MkPZRfL5E0ZQhpg9ieZXuu7bn9/f3DyAoAAMDoMpzgql/SWvn1OpIWDSFtkIiYExEzImLG5MmTh5EVAACA0WU4wdWlknbIr6dJumwIaQAAAF2tpeDK9vaStrI9XdL5kra0faSkayNi/hDSAAAAulpLQzFExDxJ5av9TqhMf6aVNAAAgG7HIKIAAAA1aqnmqhf1HX/JcmkLTtu3AzkBAABjCTVXAAAANSK4AgAAqBHBFQAAQI0IrgAAAGpEcAUAAFAjgisAAIAaEVwBAADUiOAKAACgRgRXAAAANSK4AgAAqBHBFQAAQI0IrgAAAGpEcAUAAFAjgisAAIAaje90BsaSvuMvWS5twWn7diAnAABgtKLmCgAAoEYEVwAAADUiuAIAAKgRfa5WEf2wAABAGTVXAAAANSK4AgAAqBHBFQAAQI0IrgAAAGpEcAUAAFAjrhZsA64gBACgdxFcjZBGAZdE0AUAQLehWRAAAKBGw665sr2LpB9ICkl7SNpX0kJJ60XEGXme2dU0AACAbrYqNVe7S9o4IjaWNEnSBhFxrqSJtney/apq2qpnFwAAYHQbVnBle0NJ+0mab3umpH0k3ZQn/zW/b5RWXc8s23Ntz+3v7x9OVgAAAEaVYQVXEbEwInaU9HpJX1KquXooT14iaUqTtOp65kTEjIiYMXny5OFkBQAAYFRZpQ7tEXGjpG9JmipprZy8jqRFkvobpAEAAHS1YXVot+2IiPx2qaRTJO0t6QJJ20r6maRnGqShBYyTBQDA2DXcmqs3274qXw14VURcK2mJ7SMlLY6Iqxul1ZVpAACA0WpYNVcRcaGkCytppzSYb7k0AACAbsYI7R3WbOR2AAAwNjFCOwAAQI2ouRoj6OQOAMDYQHA1hhFwAQAw+tAsCAAAUCOCKwAAgBrRLNhlaCoEAKCzqLkCAACoETVXPYDaLAAARg41VwAAADUiuAIAAKgRzYI9iqZCAADag+AKyzS7zyFBFwAArSO4wkpRywUAQOvocwUAAFAjaq4wLNRmAQDQGMEVakPABQAAwRXajIALANBrCK4w4gi4AADdjOAKo0KrARfDRQAARjuCK4xazQIpAABGM4IrdIVWA7FWa8OoCQMADBfBFXpKq0EYARcAYLgIroAWrUrtGACgdxBcATUbSl8xAjEA6D4EV0AHrUqnfQIzABidCK6AMaruTvxDWR4A0BzBFdDl2jGkxaqMS0awBqDbOSLauwF7tqSFktaLiDOazTdjxoyYO3duW/MiMXYSgPZrNYAk+ATGLtvXRcSMRtPaWnNl+1WSNoiI021/2PZOEfH7dm4TADptVf7E9eIfwFW9G8Noq0mtezsE4WNPW2uubJ8q6aaIONf2myTtEBEnlqbPkjQrv32BpL+1LTMDJkl6cAS2Mxr1ctml3i4/Ze9dvVz+Xi671NvlH4mybx4RkxtNaHefq0mSHsqvl0iaUp4YEXMkzWlzHgaxPbdZNV636+WyS71dfsrem2WXerv8vVx2qbfL3+myj2vz+vslrZVfryNpUZu3BwAA0FHtDq4ulbRDfr2tpJ+1eXsAAAAd1dbgKiKulbTE9pGSFkfE1e3cXotGtBlylOnlsku9Xf6uKLvt8bYPsH2V7W+3uFhtZbe9ie07bP/ctutab5t1xbEfpl4uu9Tb5e9o2ds+FAOA9sgXjBwtab3KpGclParULP8HSWdFxC9HOHu1s72RpE9I2k/SRElnR8ThI5yHAyRdkN9Ojogx1Vk478NjJe0dETusbH4Aw9PuZkEAbRIRJ0h6ngb/Qztd0gckfVUpyDpY0i9sf8N2W7/vtjez3deu9UfEAxFxpKTPtGsbBdvr2n5Jg0m/UOre8MWxFFjZfr7tz0q6Q9J/Slq3w1kCuhrBFTCGRcSzkn5cSjo+Ij4XEf8labqk7+X0o5Rqudrpg5L62rwNKQ1K3G7vlPSSamJEPBwRe0fE+0cgD3V6VtIJkt7T6YwAvYDgChj7/tkoMSKeUjqZPpmT2hZc2d5d0jvatf6Kp9u5ctvbSvpQO7cx0iLi3ohYIul3nc4L0At6KriyPdv2obbf2+m8tJvtdWxfaHu+7a/ktD7b99q+3/Zenc5ju9neJZf1Ptsv7JXjb3tX2w/aXiDpr5Luz5NeVOyLmrf3MkkXSVq9zvUOIx+72b48vx5n+0Tbh9g+rFlag3VsIekSLd+PbVSrlP35tn9q+y7bHyrNs4uk4qKijh6rupXLn98flL/7d9pev5VjP1ZVjv2hudwLbC+yPTOnD9ofHc1wjZqc546yfYTt44quEI3S2q1ngqvSrXjOlTTR9k6dzlOb/Yukw5Wahva0vaOktyiNKDslIi7rZOZGyO6SNo6IjZUGtO2V479UqbN1n6TPl9LviIiNI+LmIsH222z/Ol8B97DtH9verrwy21Ntf8b2I/n9gTlIn5dPVOdImpBn/47t22xfbvsPtp+1HbajtL5p+Yc/8uOs0rRxtve3/VvbJ+UT449sP2L7uGpBba/mdGute5SGfnmp7a2V+prdFxHnSdo510b9UKl59GRJX8t5fEVpXS+T9H1JG+SkT+aylPfXbra/a7vh3SRsP8/2qbavzye4u22faXuzBvNOs32O7cvy+5fbvtL247Z/Z3t6g2V2dwqcf2gPXK2Yr8QujsFLlTr9v1zSsbY3zOm7S9oxv36qUf7HqnL5837ZKv/ObR4Ri7X852Fq53Jbr8qxvy2Xu0/SNyVd2WR/dItG57ndIuLbkh6QdIBTP9BBaSORsZ4JriTtI+mm/Pqv+X3XiohfRsTjEfFPSTco9VN5raQ7bb+1s7lrv3xC2U/S/PzvrWeOf0T8PgYuA36xpOLEPrH4JytJtr+p9EPzhojYQtIRkl4n6Te2t8/zfEzSnyTNlrSO7d0kfUXSxko/aOMjYrqk4p6hb42IrSNiz4h4hdJnrpq/W5SC3TPL6XmbV0n6gdKPpiR9V9KeSoMQv6+yKkv6n5w3S1pb6SrC30o6UAPH+w6lTuh7SnpPLutZkv5VqbP/pJyv/4uIlyvVwknSB3NZXpjz9xlJ35B0kKQ1q+VyqvX6g1Jn8VfmE9zbc17+kn/4ZXsN21+Q9GdJh0oan4/LlZK2zOveSdJFtlerbOZNSsHffkoXM5QtzeX4SUQ8HRH9eR8sLn0frqnmu4sszc/TJR1o+0bbL81p5e//rZK6rea+OPa/ldKfDqXRAJ5S4/3RFRqc5/ZROr6SdGN+/5oGaW3XS8HVCm/F061sryPproi4MyJeLekVkv7T9rQOZ62tImJhROwo6fWSvqTeOf4TpWUn8HdI2lsp8LhSKbj4Uq4NOkJp37w1Ih6SpIi4SCngWVfSGTntI5J2Lq3/bZI2VaoF/Y6ki1eSn8sbJebg73eVtHkRsatSQCWlwO+rSgHH1ySdqMFeL+nXkiZFxCaS3qjUcXuSpFdq4HhvIWmqpEckzc9pN0i6U6n5b5eVlKHI3weUAtDl5NqBc/LbYyLiibzMLyS9P2/nItvrRsRSScfldOW8HSFpekRspnQyXCppGw3UNBXmSPqNpE9FxArveGF7c0k/j4ilpe/DkXly1/7258/RiyW9S9J5+dj0yve/sKtyE3CT/dFVivOcUo1s9Th35Nh37ResgV69Fc+hkj5SvImIv0v6uNIPeNeLiBslfUvpBNYLx/+Ltq+RdIukTyrVjrxT0syI+D+lfbGl0nANv4yIRyrL/yU/72a7uCHp/NL0z0bEkxFxQUQckmtHmspXMzbzTJP0Yns3RsTFEdEfEe+OiG9V5rs0Ir4UEU/nbV0saUGetoGkzfPrpUqd4O/V4M9Akfeh9K9qVt69Jb1K0k+K/JScI+k+Sc9X7vSfA6wir49JOjQi7szTblYKGqWBWkflafMiYpeI+OCKMplPoPsrjQtWVvyDb/d9ZTsuIq5RqgmdqN77/Z+pNGzIMpX90W2K81yj49yRY99LwVXP3YrH9n6SfhQRj9reqPSPZYK6/Kqhyr+zpZJOUW8c/0MjYtfcJPWtiNhN0jdKJ/ylSneK31bS62zfXH5IOl7px2eRUkCqcrAQEX8dgTIU21vZthoFZ/dooHnoNfn5uZK2k/Q5STvY3kSpVqwvTx/K72CzvkoH5+cF1QkR8YwGPm/7NljXQ3mesvvy8wQNzyGSzoyIpyvf/eq2u06lrHdHxD80+Pd/mqSu7XOay79GRDxZel8o9kfXKJ/nlALKos9o8Tv/8wZpbdf1/14KEXGt7T08um7F0za2j1Zqelhkew2l8Y72s/19Sb+NiHs7msH2e7PTVYEXS7oiIq7vseM/RammRqrsC0kb5fRvrqwGZCzJfba2ULo6cjNJffl4XxsRt9ger/Q9OELp5LqRpLquHNs2Pze75UXR36dcE7Wi22MUAWZLTTi57FvlTvCHSvo3Se+3vbak/1Dqb/deDfS56qpbc1TK/1rbeygd42I0/fMlnVz6PMxvsqoxp1z2iLhBqevHH0qzHNtgf3SFBue5z0v6o+23KzX/nRYRz9gelDYSeeuZ4EqSIuKUTudhpETEV5Q6Hpd9vBN56YSIuFDShZW0Xjr+90v6bH49aF/YLvpQdVW/u4iYJ2mq7WuVgpg5EXGJlIZhkfReSQdExNycdlaNmy+aHTZtMr3o81Fthq1FUfb89oP5UXVhvnKqq8bwkpYr/w1KdyooT39GaRDVrlMpuyLi9xq4wEQRcboq+6NbNDnPNZrvjBHIziC91CwIICmanGbabtj/wvZ2pUv4x5qiTH+SpPyP9TOS3lcEVm1we35+QZPpxR/ZeW3aPoBRhOAK6DERsUDS3UpDF3zdlUH18mXcp0h6eCirXcG0J/J6q0MHFB3J1xjCdlbI9rpKV9ldHRH35OR35+c7myxW/R0cTpPZT/Lz65oErEXNQlc1ywBojOAKGPvWLr1+bovLfC4/HyDpMtt72t7U9iuVBtu8rdQhdtnvhO21ll+VpBxASXpOg2lFUHN0Xsfqtt+ngWEBtsrpRf+iYnvNtrUsOw3SZil1dJ9dSivWN9tp0NHV81AUe+f0Sba3dhpEdGVlKQLB6gjnZyuNp7Wm0tWZVXsrXQF4aSmtWP+KumcM2o7t6bavtV29CrBVxbaq42cBqBHBFTCG5cCnPOLwwc3mrfiCpB/l10Vn179Lulap39B/l+Z9ZQvrvzE/75LzNdt2caXb9/PzybbvV7pa8eUaGD3+FbZ/rzRy9nilDrmStI8b36rjHqWr3Q60/W7bq+dtvkmpX81Blea/n+fntykNpvtgLnMxWOhJks7VwNWJ1bLMsl1cBLB7fp5ie1kTYB7Xan9JiyWdZPstedk1bH9aaeyww0qDu0oD+3Wa7WJUeOV9UFzZtmul7O/Kyx1fXmYIisFZN7S95TCWB9CKiODBg8cYfEg6VamDdFQeD0h6ewvLrybpGKVg4kmlqwu/IGm90jwXKg3MWV7/7Q3WNUnpSsTHlQYB3aY0bXWlQUAfVgqM/lvpj93hSgHNoUo1KjvlecrbekLSOxpsb2ulwWFvk/QPSdcrjbq+TYN511Ya32uxUnPoMTl9Z6UhJy6TNKU0/wSlgPCfSs19O+X0X1X2xZNKVyOVt7VZ3tZ9eVt/zsdpg8p8t1TK+bikj+Z9sbgybaGkiXm5PXOef6w0Anern5Wd8vEtr/cpSbd0+nPMg0c3PhzRVVfkAgAAdBTNggAAADUiuAIAAKgRwRUAAECNCK4AAABqNGpufzNp0qTo6+vrdDYAAABW6rrrrnswIiY3mjZqgqu+vj7NnduuO1MAAADUx3azuz7QLAgAAFAngisAAIAaEVwBAADUiOAKAACgRqOmQ/tI6Tv+kuXSFpy2bwdyAgAAuhE1VwAAADUiuAIAAKgRwRUAAECNCK4AAABqRHAFAABQI4IrAACAGhFcAQAA1IjgCgAAoEYEVwAAADUiuAIAAKgRwRUAAECNCK4AAABqRHAFAABQI4IrAACAGrUUXNnezfblpfcH2b7f9p2217c9zvaJtg+xfVieZ7k0AACAbtdScBURV0uaIEm2LWmriJgSEZtHxGJJB0u6LyLOk7Sz7alN0gAAALraUJoFl+bn6ZIOtH2j7ZfmtH0k3ZRf3yppryZpg9ieZXuu7bn9/f1DzjwAAMBoM+Q+VxExLyJeLOldks7LNVmTJD2UZ1kiaUqTtOq65kTEjIiYMXny5OHkHwAAYFQZdof2iLhG0lWSJkrql7RWnrSOpEVN0gAAALrakIOrXFNVuDsi/iHpUkk75LRpki5rkgYAANDVWr1acHtJW9meLulY2z+1fYykC/Is50va0vaRkq6NiPlN0gAAALra+FZmioh5koqr/W6QdHpl+jOSTlhZGgAAQLdjEFEAAIAaEVwBAADUiOAKAACgRgRXAAAANSK4AgAAqBHBFQAAQI0IrgAAAGpEcAUAAFAjgisAAIAaEVwBAADUiOAKAACgRgRXAAAANSK4AgAAqBHBFQAAQI0IrgAAAGpEcAUAAFAjgisAAIAaje90BkaDvuMvWS5twWn7diAnAABgrKPmCgAAoEYEVwAAADUiuAIAAKgRwRUAAECNCK4AAABqRHAFAABQI4IrAACAGhFcAQAA1IjgCgAAoEYEVwAAADVq6fY3tneTdGJE7Gl7nKQPS7pd0moRcXarae0pAgAAwOjRUs1VRFwtaUJ+e7Ck+yLiPEk72546hDQAAICuNpRmwaX5eR9JN+XXt0raawhpAAAAXW04fa4mSXoov14iacoQ0gaxPcv2XNtz+/v7h5EVAACA0WU4wVW/pLXy63UkLRpC2iARMSciZkTEjMmTJw8jKwAAAKPLcIKrSyXtkF9Pk3TZENIAAAC6WkvBle3tJW1le7qk8yVtaftISddGxPwhpAEAAHS1loZiiIh5kspX+51Qmf5MK2kAAADdjkFEAQAAatRSzVUv6jv+kuXSFpy2bwdyAgAAxhJqrgAAAGpEcAUAAFAjgisAAIAaEVwBAADUiOAKAACgRgRXAAAANSK4AgAAqBHBFQAAQI0IrgAAAGpEcAUAAFAjgisAAIAaEVwBAADUiOAKAACgRgRXAAAANRrf6QyMJX3HX7Jc2oLT9u1ATgAAwGhFzRUAAECNCK4AAABqRHAFAABQI/pcrSL6YQEAgDJqrgAAAGpEcAUAAFAjgisAAIAaEVwBAADUiOAKAACgRlwt2AZcQQgAQO8iuBohjQIuiaALAIBuQ7MgAABAjYZdc2V7F0k/kBSS9pC0r6SFktaLiDPyPLOraQAAAN1sVWqudpe0cURsLGmSpA0i4lxJE23vZPtV1bRVzy4AAMDoNqzgyvaGkvaTNN/2TEn7SLopT/5rft8orbqeWbbn2p7b398/nKwAAACMKsMKriJiYUTsKOn1kr6kVHP1UJ68RNKUJmnV9cyJiBkRMWPy5MnDyQoAAMCoskod2iPiRknfkjRV0lo5eR1JiyT1N0gDAADoasNtFnTp7VJJp0jaIb/fVtLPJF3aIA0AAKCrDfdqwTfbfq+kiyVdERHX297D9pGSFkfE1ZLUKA0rxyCkAACMXcMKriLiQkkXVtJOaTDfcmkAAADdjBHaO6zZyO0AAGBsYoR2AACAGlFzNUbQDwsAgLGBmisAAIAaUXM1hlGbBQDA6EPNFQAAQI2oueoy1GYBANBZ1FwBAADUiOAKAACgRjQL9gCaCgEAGDnUXAEAANSImqseRW0WAADtQXCFZZrd55CgCwCA1hFcYaWo5QIAoHX0uQIAAKgRNVcYFmqzAABojOAKtSHgAgCA4AptRsAFAOg1BFcYcQRcAIBuRnCFUaHVgIvhIgAAox3BFUatZoEUAACjGcEVukKrgVirtWHUhAEAhovgCj2l1SCMgAsAMFwEV0CLVqV2DADQOwiugJoNpa8YgRgAdB+CK6CDVqXTPoEZAIxOBFfAGFV3J/6hLA8AaI7gCuhy7RjSYlXGJSNYA9DtHBHt3YA9W9JCSetFxBnN5psxY0bMnTu3rXmRGDsJwPAwqC2AMtvXRcSMRtPaWnNl+1WSNoiI021/2PZOEfH7dm4TANphKH/MevFPXKsBJbWZ6AXtbhbcR9JN+fVf83uCKwDoMqsSUPZiMIr26nTA3u7gapKkh/LrJZKmlCfaniVpVn77mO2/tTk/RZ4eHIHtjEa9XHapt8tP2XtXL5e/l8su9XD5/ckRKfvmzSa0O7jql7RWfr2OpEXliRExR9KcNudhENtzm7WRdrteLrvU2+Wn7L1Zdqm3y9/LZZd6u/ydLvu4Nq//Ukk75NfbSvpZm7cHAADQUW0NriLiWklLbB8paXFEXN3O7aH32B5v+wDbV9n+dge2v4ntO2z/3LZHevu9xPaatg+3fZ3tkzqdn3awPdn2h2z/3fbunc4PukcvfH9Gk7aPcxURp7R7G0M0os2QI8n2qZKOlrReZdKzkh6V9KTt70g6KyJ+OdL5q5vtjSR9QtJ+kiZKumMli7Tj2O8iqS8/NtDo7d8wx/Z6kt4naS9Ju1WmL1XqF/mApD9J+lpEXDGiOVwB29tIOknS/pKeI+knQ1h8THznbe8t6RhJr6l51WOi/G3Sy2WXcvlX8fszVnX02Ld9nCuMLNvjJH1VAxcKnC7pHkkbKn2xpuX0MyW9MyKebWNeNpM0LiIWtGsbeTsnSPq4pLMj4vA2bWNdSVtGxJ8q6etJOl/SLRHx/nZsu275M3K3pE0kfV3ScZIel7R1fn1UnvUTEXFCRzLZhO0zJb1d0kcj4qQOZ6ctbN8maStJe0TElR3ODrpIL3x/Rot297nCCMvB0o9LScdHxOci4r8kTZf0vZx+lFItVzt9UKlGp90WjsA23inpJdXEiHg4IvYeK4GVtOwzUtTyPRgRj0bEsxFxS0S8Q9K38rT/sr1XZ3LZ1AOdzsAI6IUyojP4bI0Qgqvu9M9GiRHxlKT3SHoyJ7UtuMr9Rd7RrvVXPN3OldveVtKH2rmNDljRPvts6fXB7c7IED3V6QyMgF4oIzqDz9YI6angyvZs24fafm+n8zKCbrH9FUmy3SdpnqTV8rQt2rFB2y+TdJGk1dux/iHkYxfb99u+z/YLh3P8bW8h6RIt349t1LK9q+0HbS+w/YDtd1T3xUpWcXvp9aR25rVOtnezfXl+Pc72ibYPsX1Ys7RuUSn7823/1PZdtj9Ummcon4ExpVz+/P6gXNY7ba/fQ8f+0FzuBbYX2Z6Z0w+yfb9Sn76uYXsd2xfanl86zx1l+wjbx+UuEA3T2q1ngisP3IrnXEkTbe/U6TyNkBdL2tP2jpLeojTo2V152n3VmW2/zfav8xVwD9v+se3tKvNMtf0Z24/k9wfavtf2vPzDdY6kCXn279i+zfbltv9g+1nbYTtK65uWfwgiP84qTRtne3/bv7V9Uv6h/JHtR2wf1yD/qzndaukeSVco3RFgV6UgoXz8X237VNt/ymXtt32J7VeU1vUySd9X6qguSZ/MZbm5NM9utr/rJgPg2n5e3s71+QfvbttnOvVHq847zfY5ti/L719u+0rbj9v+ne3pDZbZ3SmQ+qG97GrFpZImR0SfpM8rNRPvLmnjiNg4Im6urqdim9LreU3KNcX2l23/JZfpAdsX2J5WmW+87SNt357zOj4fx/tzvj/WLBNOQeLP8j6/z/b3lPoONnODpBfYvl6p+eP9udwzbU9VqoW7LyLOk/Rq29+wfVPe1ua2L8r7+mbb+5Ty8ab8Ofmn7Wtsv2BFO28o8g/+3FzGu50uSml6oZHtffN36Rbbj9m+wvYu+Urs4jv3UqWLPA6TdGL+bi5S6hv4jkafAdt75X39bdtr2P5W/o59sTLfSn8fVpbXyjwb2j7F9j/y+5fY/lXe17fafneD9S6XV0k/VRruR/l7sJWk/1TqW3i9pMck/Vt+vXP+PBTr28P2b/Jn9CkP/A6tX9nueNvvs/17p6s5H7R9Xnldeb4X5s/Wzfn9+5x+367O39MoPZ61/ZHSsrvZfihPe9r2AaVpa9n+iNPVfg/k78RXlD73xbG/LSKm5O/+zyV9wKkP3zckXSXpfxodqzHsXyQdrtTlpTjP7RYR31b6DTjAqVJhUNqI5CwieuIh6VRJh+bXb1Lq0NfxfLWprLtLivwYL+kHSkHVFUoDuz6bp51cWe6bSleRTMzv91dqQnxY0vY57WNKg8EW699N6Qq54v3b83xX5ve7V7Yxs5i3km6lH4BQuppRkraXdE1p3SdJ+l+lKx9D0t15vsPz+7OV+pQtlnR/abnFSp38i+N/UJ5+h6SNctqrlarMF0uaVMnbWXk9h1fSPyPpb3naggbHYQtJt0k6Q9KEnPYaSY/k7eyY09aQ9AVJT+R1XZn306NKgfDTOf0WSatVtvGlUjk3aJCHzyoFJH/M5Z1ZOT6nVOYfJ+ni0n7bqME6J0v6u6TfSVonpx2al7lD0hqlsv6ulL+ZSmPfLVb6HBbpb2uwjcNzud+TPxsTJH2l/Flosq/vyfP+j6Rj875+QtJHc9qukv5L6WQbkhbkZe9ROhEvzemPK/UXfG9Ou0sD35ubq8dhmN/TMyX9Q9Ku+f3Gkn5TKmP1u/NhSb+V9Pz8/lV5+aV5315ZmvfVSld/PijpuUoXLxTf08W5DDdI2lRp/MGibGcpXWX1cH7/rKTVW/19aDWvOe2Dlc/Bi/I8d0t6ppT+X3n+TVaS11CqLd9e6TfqUaWTqiRdnbf9sKRPSzoip8/IaTvn92tr4Hdo/VJ5Vs/b/obS58tKn83In52N83xzlLplFJ+tg/P+LvK3p1J3ieL9QQ0+F5Ny+Xcqpa0v6Tql38DxOT+n5nXMk3R1ZR1H5P30nrw//pL3bcPvTzc8lM5zJ0r6cH7/cqVzwqxq2ojkp9M7ZAR3/BxJr8+v95X09U7nqY1l3b30JeqT9DmlE/gblSL3UDrpTSgtc0Setm5lXV/O819VSptWWv+ZktaUdKCk85RqTKTmwdW4YtkG+X67SsFVKf1/cvqNkv4/pZP7VyUdmacfnqcvkvQfksbn9P+v9EN3d+n4fyynnV3Zzq9y+hsr6WepQXCVp71SDYIrpR/fa5RO+OMr044o5WndnLZG/hEIpWa5/5G0eZ72QqWTWEj6l8q6tpd0raRPNshbn6T/KL3fTumkur4qwZXS5dl7SrpcAyeGXZp8vt6f5/loJf2OnP7iUpmKKxOLoPEw5cCktF9/VlnPDkonwjMr6ePzvhl0cqjs66ty2i+U/s0W+3pxLtv0XNYiKF2odMXkdnm5jSTdmqddonQynVTaf0Vg/y+N9s0QvqPvzus5pJK+lQaCh91L6a9WChI3q8x/XJ53vnJwlfd5cSw+VZp3PQ0Elf9aWU9xov6rUkD5XEmfUrogRhra70MreS0+A9to4Lfku5JektM31kBgvlTS1BbyOr+S19cq/WY4fx6+m5e7VQMB2zclzW3wObtFg4Orjyp3qajMe4kqvyVKfypCKXD8ilI3jHcr/VY+J89zRZ7nPQ0+G6+TdEEl7WxJ/9vgN+YGVX5/lL4/T0n6RWX+3TXw5+Gk6nbH8kPpDjCfk3SCpPeWvq8/b5Q2EnnqmWZBreRWPF3sQkk7Kf1YfFHpH8wcSZ+JiCdK831A0i8j4pHK8n/Jz7vZnpxfzy9N/2xEPBkRF0TEIRHRv6LMxIqHfnimSXqxvRsj4uKI6I+Id0fEtyrzXRoRX4qIp/O2Llb6JyNJz1f6ly6lgOsZpSaCsr/n5/VWVIaKZuXdW+nf+k+K/JSco9Qk+3zlTv8RsVQpoJHSCfDQiLgzT7tZ0q/ztEHNiRExLyJ2iYgPNsjDvyn1fSvmvVHpSsAtS/McnZsNHpJ0mVLw8SZJ20QaBLiR+UoBwJ8q6YP2X0Qszcf77px+RkScHRHFcf5mozJJOk3pn/lXKmV9WulkVrVsXyudOKSB7/s5SgHRekpB5VoRsUQDF3U8q/TDe2PexgNKJzJJWhoR74iIB/O0G5WCuEZ5bpntCZJOVqpJOL9SxtuVTphVsyVdFxF3VdKL7+cWSr9rUjqB9Cl9zpcNpRERDyudbKTlL1QovmOPRsQZEfFYRPxnRJyW04fy+9BKXl+WX5f7930o8lAnEXGf0udwidJnoZzfhnnVQHeHIq8/V2oKm6j0eViQp2+tgeO/oaSXlJsr8+fsrOK97TWUxof7cemzWy3Tv3mgL0+RvwmSToyIZyLiqxFxVP7sSSm4lwaGPSl7p1LQWmx/Y0lvVaqZWSZStFA0208uTTpNKUD8cGX+K5X+XHWjQyV9RI3P8x0597d9ENFR5FKlH+EL1Fu34tk/Iu52GnBzYUSEU7+o3xQz5GnbStrIpf5E2Zoa+DBOldQfEU87d++JiL+2vQQDV7atbFvLfvhsO//4fFlpoNHVJO2hVEuxllLTxK/yvJtIOlLpH7c0tL6Iza6+KU4GC6oTIuIZ2z9T+oe9r9JYZOV1PdTgR7zoHzdBrds0Iu4p7Qsp/XMt78eLI+Lw3LfjAqWTzZqRrixtKCJ+Yvs5xTy2t1YKEou+N9X9V6yrOsDqcmWyvaHSP/cnJf25web/0SCtvK9fml9fKmmHiPiDU0fedZRqrHaQ9AcNBEdLGpT13vz8cINtFWUYynGoer1SP77LGwTeUqWMtleT9K+Snmnw/VxdA9/PNfPzGvn5yfxdXfbdl3RnnraaBivycVM1M0P5fch9p1rJ66aS/hgRz5Z+S8p/2pQ/uz+V9Gal5pzh5PV5St/rdUvbf65S7ZWUaqtfL+mK3L/skxHxYEScWlrtS5UC87fbfnNlk2uVyrSB0om8yN+DK/izebHSn46X2H5VRPw6538TpfH0rirNu5vS8fqI7Q9U1vPcUpnK359nJM3NaeXv/0gMWzOibO8n6UcR8ajtXyi1TEgD5/krlf7MlNParmeCq4i4Nndc7LVb8fww//P6nqT9bH9f0m8j4t7SPMWJ5ptNakDGojc7XRV4sdLJcqqkcaXj/yunK6aKf/ZnKv2jPaym7W+bn6PJ9OLEUK4BaTavNPCD3dItdmxP0UCQUN4XV0TEElfu1BMRF9o+T9Ihkr5m+3cRcUez9UfEU06d//9TKeCYo1RD+q+NZh9CmWbk94sbBJjNFPt6iqStnDr+ny/p5Hy8/6TU/LSmpC1z2lw179i6otrVYtqq3Opox/zc6mj+z1PqC3RBRLyl0Qy2t5d0aS77wTmfE50utHhPfl2+SvbvDVbTTMu/D7n2aoV5HaK5SsHV+ivZ7vZKTaq756TFkr6mVHN8ew5QT1ZqOnZEFCOUf1Hp8/N2pRqvd9v+vKRTI6IY0qYo/8ci4qurXqRlf7C+pjT48Xs0UDN9lFJTdFmx/XdGxP9W11U59pspfTYfLX1/jrW9h1LN9I1Kzf9dwfbRSs3Ni/J57vOS/mj77Uq/B6flfT0obSTy1jPBlSTF6LsVz0j4l9K/4483maf4HExrMn3MiYgLlZpEZXt/peDq7Ii4JKfNVuqvcUBEFP/wjqwxC0U19KZNpj+Un6vNLLWIiPuVx6sq74uVeK/Sv+TNJH03/6NermYlN398Sqlvyf4RcVtOryPrE/PzUIbxKPb1uIgoX7l1Qs7XOKVA6pHII87nK4g+uWpZHbahlnGl38+ImKf0GZek2bZvV6q1/XREXJbTL3S6ZD9UaWJa1e0Pc95WFLV4j65opqL8tnfOSfMi4vOl6c+o1ERaSn9a0lH5j8UnlK4++5BSM98eEbFQ7ft9PFOpKetN+c9Qv6R/V/qTUlbe/nLBVfnY235xTn62NP105dpxd9k9BSPiK6p0H2gy3xkjkJ1BeqnPFZormmdm2p7YaAbb2+Uq57GoKNOfJCn/g/mMpPcVgVUbFH1Jml22X/xgNhzqoBNyn5zDlU6+O2mger3qo0r9at5aBFY1Kk6mE51uOdSKsbavizJu3uL8i5SaVl/sJsNAON1AfNm0fNI5QdJHbb/UaUiTw5SayD6WT8itGsrvw5DzuhJFX6LlmgBryOsyEXFlROysVEu2UKk2q2gaLNa5v+2GFRK2X2l7zUbTmsmB24VKQfY7lboIXN2gX1ux/QObrct20aVhON8ftAHBFRTp3n93K1Xnf92VQdZylfopatwHpelqVzDtibze51XSi47ka6gm+QdmG6UfrXtycjF2zp2Nl1rue7GisjRTNDu8rsmPfFHLcMEw1t02uR9aMUL7B203akIY6v4bij8q9RexBvrANVKuJhtr+/q3+fnFHugE3oilZRc7/C6//6ZTh/iqU5QuhEgLpqai/6fUrPY/Ss1hh0k6MIZ4T7mh/D4MJ6+l9TT63m+dn39ad17z+6+V54mIHygNayGlK4GltA+fUKrRXa620/Zako6LiCer01pQdFyfpVRz3KjZsbiI4pW2/6PB9icr9RmVhvf9QRsQXHWntUuvn9viMp/LzwdIusz2nrY3tf1KST9UGpzuSWlZM4vy67WWX5WkHEApdSKuKk7KR+d1rG77fRr4gdgqpxc/AMX2mm1rWXYapM1S+rGZXUor1jfbadDR1W0foXTBgyRNsr210yCiKytLcUKoNvGcrXQ5/JpK/0qr9lbqZ3FpKa1Y/4qa6wdtx/Z029fa/sQKlmmk2JeNTn4fUqrlGSfpfNvbVKYX++8/cx4m2D5WA1eATbL9itz0Jq28XMvKlK/M+26Rj2Y1BZV8D2dfF9tstP6ifNVO39LAZ2xV7j5wiVJ+x2vFt1Uql7H4fu4i6Te235C/ny91GkRzndKfBykFkvMkvU1puI5tJO2Zm4gbWdl3rOXfh2HktfCi8hvbG+Tt/TIiftemvD5fqSlumYgoxoS6J79/TAP9oI51GhH8lXmde0r6pVJ/plbzV97W7yT9n9IYXutE5cbweZ7blfpLStIXc0D4MqfBnN+g1Cn//DzvcL4/aIcYBWNU8KjvofTFPksDY8ccPYTlflharvy4TukKsmLeV5WmHdVkfZ/O00/O72drYCDNk0vL36/0L/JsDYxJFEojq79S6QT0s5x2g0pjz5S2NVPpKrgnlGpVikEP36T0I7lfZf5PlLazKG//HKV/jaF0CftvNTAmTTFY4Ln5/SwNDD5ajE31jKQXVLbzEqW+VUskvSWnrZH3zW1KVwWV5y/G31qo0oCgeR/8X552TmWZM0plWW4Q0SbHZnulQTJD6fL1DRvMs4MGxta6X6nWozh+39Xg4/e4UifRYvDRh/NrK3XGXpzTP1LZxptK+26bUvoGSs1ARd+g5+X0nZQC8+Lz8fLScRjqvj5SA2MobV5Kt9JnMZQus1+rNG2CUofg0CoORJjLUoyZdYJSsGalZtlibLavSNpZA2NCfbG038uPO1Ua+FYpyHy8ybxLlJpRT9bAeHDlAXwfULrKdNi/D0PJa563/J3vy2nPUwqG7yjnp+68KtWIPabB468drPTZ/9fSfGsp/SY0WudPlTrJF/MeUpq2VwufheJ379AVzLOR0nA6jbb/5cq8Q/7+8Kj/0fEM8KjxYKY+Ao80+PI9oDxy+kqWX03p3lM35h+Xe5VGDl+vNM+FGhjksHjc3mBdk5QGyntc6WRcPnmurnQlz8NK/w7/O/8gHq40TMChSgHFTho8+nIoBVDvaLC9rZXGjrlNKaC6XinI3KbBvGsrjfe0WKkJ4ZicvrNSsHWZpCml+Sco3Qbnn0pNUDvl9F9V9sWTSlenlLe1Wd7WfXlbf87HaYPKfNUfzseV+jYdqsEjPIdS8FWMkr1nzvOPVfqBb3J8N9XgkcbL+f59g/mPq8z3VN7eZKWT16NKl7T/e55//3y8LlCqMT1Ky5/k71XqA3e9Bo/C/aRKg5IqnVy/ksv6qNL4TMcpBcZ3KY2RdZBKg1oOYV9fVtkHS5SudnyRBt9tIJROvO9Q+mw+WpnWrzxC/TC/r9spBaGP5jxfpNTn51c5759RGghztdIyb1NqpipGXz9LeXTwyrr3zNNvz5+fpyp5D6Uank01+I4LxXH+2HB+Hyrzt5rXYrv/plTbtkDpasavqRT4tyOvSoFR+bflb0qdxl/WYJ0TlEZIvz2v8w6l7+gapXl+32A/X7GSz8GEvN3nrGS+5yldDXd33v7NSgP6Lve91zC+PzzqfTgfCABAl8jNb9+MykCwuc/R85TGdvpkRHT8IhXn+4xGBP2A0DXocwUAXcT2W5Xu6bfcCPuRRgvvj3QT27YMAwKA4AoAukZpDLJGI7+X55updGUZgDYguAKA7rG2UufnvfNVZYMGvrS9Vh7nbY4aDKo50myvXno9pHGigNGMPlcA0EXysBif1sCf54eVOt+vodQp/D5Jr4+IRvduHFF5KINiGIPXR76DAjDWjZrgatKkSdHX19fpbABAS5YuXapbbrllSMusvfba2mKLLdqUowGPP/64Fi5cqEcffVRPP/20xo0bpzXXXFMTJ07U5MmTtdpqjYbwGlk33nijlixZMihtwoQJ2nbbbZssAYwu11133YMR0XAg4FFzb8G+vj7NnduuO5EAAADUx3azu1TQ5woAAKBOBFcAAAA1IrgCAACoEcEVAABAjUZNh/aR0nf88lf6Ljht3w7kBAAAdCNqrgAAAGpEcAUAAFAjgisAAIAaEVwBAADUiOAKAACgRgRXAAAANSK4AgAAqBHBFQAAQI0IrgAAAGpEcAUAAFAjgisAAIAaEVwBAADUiOAKAACgRgRXAAAANSK4AgAAqBHBFQAAQI0IrgAAAGpEcAUAAFAjgisAAIAaEVwBAADUiOAKAACgRgRXAAAANWopuLK9m+3LS+8Psn2/7Tttr297nO0TbR9i+7A8z3JpAAAA3a6l4CoirpY0QZJsW9JWETElIjaPiMWSDpZ0X0ScJ2ln21ObpAEAAHS1oTQLLs3P0yUdaPtG2y/NaftIuim/vlXSXk3SBrE9y/Zc23P7+/uHnHkAAIDRZsh9riJiXkS8WNK7JJ2Xa7ImSXooz7JE0pQmadV1zYmIGRExY/LkycPJPwAAwKgy7A7tEXGNpKskTZTUL2mtPGkdSYuapAEAAHS1IQdXuaaqcHdE/EPSpZJ2yGnTJF3WJA0AAKCrtXq14PaStrI9XdKxtn9q+xhJF+RZzpe0pe0jJV0bEfObpAEAAHS18a3MFBHzJBVX+90g6fTK9GcknbCyNAAAgG7HIKIAAAA1IrgCAACoEcEVAABAjQiuAAAAakRwBQAAUCOCKwAAgBoRXAEAANSI4AoAAKBGBFcAAAA1IrgCAACoEcEVAABAjQiuAAAAakRwBQAAUCOCKwAAgBoRXAEAANSI4AoAAKBG4zudgdGg7/hLlktbcNq+HcgJAAAY66i5AgAAqBHBFQAAQI0IrgAAAGpEcAUAAFAjgisAAIAaEVwBAADUiOAKAACgRgRXAAAANSK4AgAAqFFLI7Tb3k3SiRGxp+1xkj4s6XZJq0XE2a2mtacIAAAAo0dLNVcRcbWkCfntwZLui4jzJO1se+oQ0gAAALraUJoFl+bnfSTdlF/fKmmvIaQNYnuW7bm25/b39w8x6wAAAKPPcPpcTZL0UH69RNKUIaQNEhFzImJGRMyYPHnyMLICAAAwugwnuOqXtFZ+vY6kRUNIAwAA6GrDCa4ulbRDfj1N0mVDSAMAAOhqLQVXtreXtJXt6ZLOl7Sl7SMlXRsR84eQhv+/vTsPl6wqDzX+fiAIxA4i3QiRoQVBw6BRG0ERLgYxEUwkOA8oIGBCvIkXwlUxOBLFRKKJOHFFQI0aiBMKFxQHIFzD4IiAQYQGFIRmFMGmBb77x1qbs7u6qjmne9ep01Xv73nqqaq1p7X23lX7q7XWXiVJksbatIZiyMzLgPbdfkf3TH9gOmmSJEnjzkFEJUmSOmRwJUmS1CGDK0mSpA4ZXEmSJHVoWh3aJ9HCN5+5Qtri4/YdQU4kSdKaxJorSZKkDhlcSZIkdcjgSpIkqUMGV5IkSR0yuJIkSeqQwZUkSVKHDK4kSZI6ZHAlSZLUIYMrSZKkDjlC+ww4arskSXo41lxJkiR1yOBKkiSpQwZXkiRJHTK4kiRJ6pAd2leTndwlSVKbNVeSJEkdMriSJEnqkMGVJElSh+xzNQT2w5IkaXJZcyVJktShVa65iojdgC8ACTwH2Be4BdgwM0+o8xzZmyZJkjTOVqdZcE9gs8zMiHg2sHFmHh8Rx0TELsA6vWmZeVEXmV4T9WsqBJsLJUkaN6vULBgRmwD7AddExN7APsCVdfIV9X2/NEmSpLG2SjVXmXkLsHNE7EBpGjwfuKNOXgpsCkSftOVExGHAYQBbbrnlqmRFkiRpTlmtDu2ZeTnwSWALYIOaPA+4DVjSJ613+RMzc1FmLlqwYMHqZEWSJGlOWKWaq4iIzMz6dhlwLPB84DRge+Bs4IE+aerhsA2SJI2XVa25enFEnFfvBjwvMy8ElkbEwcCdmXl+v7SuMi1JkjRXrWqfq9OB03vSju0z3wppkiRJ48xBRCVJkjpkcCVJktQh/1twDrKTuyRJay6DqzWEAZckSWsGmwUlSZI6ZHAlSZLUIZsFx4zNh5IkjZbB1RqsXyA13fkMuCRJGg6bBSVJkjpkzdWEsjZLkqThsOZKkiSpQwZXkiRJHbJZUA+Zbgd5sAlRkqRBrLmSJEnqkDVXWiV2iJckqT9rriRJkjpkzZU6M90+W9ZwSZLGmcGVZp1NipKkcWZwpTnBWi9J0rgwuNIaZSbDRfRjcCZJGjaDK02U1QnODMwkSdPh3YKSJEkdsuZKmqbV7RdmR35JmgwGV1LHZtL02HVHfgM4SRo9gytpDbC6HfklSbPH4Eoac5P6h9zW4kkalaEHVxFxJHALsGFmnjDs7UladaOqIesX9AzKy6gCJIM1SdMVmTm8lUc8G9gnM4+OiGOAr2fmRf3mXbRoUV566aVDy0vD5hVJk251g0IDTQki4nuZuajftGHXXO0DXFlfX1Hf9w2uJEmzYxg/Mv3hqrlk1MH+sIOr+cAd9fVSYNP2xIg4DDisvv1NRPz3kPPT5OnWWdjOXDTJZYfJLr9ln1yTXP5JLjtMcPnjfbNS9q0GTRh2cLUE2KC+ngfc1p6YmScCJw45D8uJiEsHVeONu0kuO0x2+S37ZJYdJrv8k1x2mOzyj7rswx6h/SzgyfX19sDZQ96eJEnSSA01uMrMC4GlEXEwcGdmnj/M7UmzLSIeEREviYjzIuLkEWz/DyLi2og4JyJitrc/SSLikRFxYER8LyLeMer8aOYiYv2IeF1EfN9jqGEa+lAMmXnssLcxQ7PaDDnHDLXsEfEe4HBgw55JDwJ3U5qJLwZOycxvDDMvA3Ra/oh4LPBeYD9gI+DaLtc/TbsBC+tjYwb3MRj5eR8RGwJ/AzwX2KNn8jJKv8ybgR8CH8vMb3W06dUue0RsC7wD2B9YD/jq6q5zFo382I/QQ2WPiK2Bt1OO4aOAM0aVqVnksR+RoQ7FoMkTEWsBH2XqRoXjgV8Cm1C+1Lar6Z8AXp+ZDw4xL1sCa2Xm4mFto27naOAfgFMz88AhbeP3ga0z84c96RsCnweuysy/Hca2u1bPkRuAPwA+DhwF3AM8ob4+pM763sw8eiSZHCAiPgG8DnhnZr5jxNnRKoiIjwGvx2OoIRp2nytNmBosfaWV9ObM/EBmvgXYEfj3mn4IpZZrmN5EqdEZtltmYRuvB/6oNzEz78rM568pgRU8dI40tXy3ZubdmflgZl6VmYcCn6zT3hIRzx1NLge6edQZ0GqbyLvnNLsMrjQM9/ZLzMzfAX8N3FeThhZcRcSewKHDWn+P+4e58ojYHnjrMLcxAivbZ//cev3KYWdkhn436gxotQ318yrBhAVXEXFkRBwQEW8YdV6GLSLmRcTpEXFNRHykpi2MiBsj4lejqhHIzNuAn9S3jx/GNiLiacAXgXWAL0bETRHxpDXx+EfE44EzWbEf28qW2T0ibo2IxRFxc0QcGhG71eN+U0Q8aXg57sTPW6/nT3ehiNgjIr5ZX68VEW+PiFdHxGsHpY2LnrJvHhFfi4jrI+KtrXnWpHNgRtrlr+9fXst6XUQ8un3sgaeMMKud6zn2B9RyL46I2yJi75q+3P4YaYY7NOA6d0hEHBQRR9UuCH3Thm1igqsof8WzcWZ+GtgoInYZdZ6GbFfgQEpT3F4RsTPwMmCrzNw0M88dYd42qs839U6IiNdExH/WO+DuioivRMQOPfNsERHvj4hf1/cvrUHjZfWi+Slg/Tr7byn9eT4DHAmcCnwoIrK1vu3qF1HWxymtaWtFxP4R8d2IeEf9ov5yRPw6Io7qk/+1I+KYiPhlRPym5v8JfebbMCLeExE/rGVdEhFnRsQzWvM8DfgPSkd1gPdFxNUR8dPWPHtExOdi+QF4lwELMnMhpU/TDsDplA7j9wN/F6U/Wm+etouIT0XEufX90yPiOxFxT0T8V0Ts2GeZPWsg96WIzu5W3Lb1+rJ+M0TEphHx4Yj4cUTcEBE3A29g6tx6JeX8+jxwYEQsBt5NadZ7AvDRiLg9It41KBNRgtSz6z6/KSL+ndJ3cND8j6nH9Af14nZDRHxiwL5+bER8ICKurO+3iogv1n3904jYpzXvi+p5cm9EXBART+xdX70Tuznnn0q5yeLpwBER0eR5T2AzYHPgj6Lc9XhglDvoPlSP4+0RcXJEbEwfEbF9RJwaET+KcrG+sn4uNmjN87KIeLD1ebo3Iv5HRGxd15+tx50RsV1dbpf6mcmIuD8idm+tc+OIOL7uh9ujBAnviYj12uWPiOdGxNmUvntbAt8Ergf+L3BTZn4G2GIlx/Cp9fP9o7o/ro2ID0bEvNY8V/SU4ayafkJEPNBKfyAiPt5a7j9a084ZlIeZ6jn2V9fv94XAScB36udym5q+VWbe2dW254B+17k9MvNkymf9JRGxsDdtVnKWmRPxAN4DHFBfv4jSmXHk+Zqlsn+BMpLst4AbgVcNeXt7Alkfj+iZthvl7sEE3t0z7STKXVgb1ff7U5oQ7wJ2qmnvogxG26x/D0ofiub96+p8F9b3NwF7N8e/vs5y6i+37QD+T512Sk3bCbigte53UL6k767vb6jzHVjfn0rpU3Zn3c/NckuAJ7S2tR7wI0q/o8fWtD+mNDndCczvydspdT0H9qS/H/jvOm1xn+PweMo/JJwEXFq392bg13U7O9f51gX+hRKIJvCdup/uplyY7q/pVwFr92zjQ61ybjyDc+Q7dZlje9LXotzFlTWPj+2z7ALgF8B/AfNq2gF1md/W8nwWOKLO0+TvW8B363p/00p/TZ9tHFjL/df13Fgf+Ej7XOizr68GTgDWr2nP693XNf0t9ZxIYHFd9peUTv7Lavo9lP6Cb6hp1zP1uflp73Fo9mmftP+s+2MT4BLKeXlFqxwHUcYfvLXmtUn/IfDInnU9n/JZfG3dJ48A/q7O/+P28QeeRfnsJvDSVvralPEPE/h+n/Npu1reXVtpW9Z9e2jd7gaUz1oC59Z1/gFwe2sf3V4fzWc1gT3r+s4ZcAz3qNs+gXIerk35cZLAv7XmW5fynZrAFT3reHYrD/v3OR6fpdaqd/yd+52e92sD/9T6HvsRcDnw1C63O5ce9Zi8HTimvn96PU8O602blfyMeofM4o4/EXhBfb0v8PFR52mWyj0P+EDr/eb1g7bdELe5Z+sLbUFNWxd4ISXYSeDb1ItQnX4Q5VfF7/es68N1/vNaadu11v8J4JHASym1U832vlOnH0i5GJ0IvKB+aa4QXNVlXkcruGqlf7amXw78OeXi/lHg4Dr9wDr9NuB/UgPKOu89ddo5rfW9sKad2rOdb9f0F/akn9KUpU+en0Wf4IpyEbqYchFv8rND3ReH12VuaPZ3PT6H1fSf1zJvVac9iakL5a4929mJEsi+b4bnSHN8jq3v1wP2otQ0NEHHbgOW/ds6zzt70q+t6U8Bvk65AWAtSoDZXHCPplx4/hr4Xk0/u2c9T6ZcZD/Rk/6Ium+WuzDXfX0BJQDo/TFxUJ99vR4l8ErKzRAfB3ao0x4L/KxOO5MS8M9vHb8mWNi13z7teb8V9aLSSmvOgSbovLDuzyaYeBtTn603t5bblHJ+r3BhYirQOWPAefumnvRn1PRrqXest6a9qHcbwHnAR3vS1mPqR9ZBrXPqPTXtCuADlP+2/UfKD4Md63xn9h7Dmv6lmv6cnn2YwB09825NCaLuoidQYip4PKjPvvoxpRap6+/c3mO/J/BnPWm7U77Douvtj/pBvc5RPt9vaJ3r5/RLm408TUyzIA/zVzxj7ADKFyYAmfkLyrABKzTxDMm/RsQFlC+3f6X0t3o9sHdm/rY1398B38jMX/cs/+P6vEdELKivr2lN/+fMvC8zT8vMV2fmkp7lF1PuPtsC2CBXPvTDAwPSm+1dnplnZOaSzPyrzPxkz3xnZeaHMvN+gMw8g1LbBfC8iHhcfd3UUPygZ/lf1OcNV5LHXr3lbTwf2Bn4Uis/l1P2xcWUIHdzaqf/zFxG2VdQanUOyMzr6rSfUmpAoNQiPCQzL8vM3TLzTTPIc9vhEXE1JQA6l3JevgjYNssgxP1cQ7mw/bAnvb3/lgDr1uPdnFM/Ac7NzAco3wFNH53eZrvjKP31PtJOrPux378TP59SY/HVZl+3fIoV9/VS4Lo6/UHKF//lddrNlGAFYFlmHpqZt9Zpl1OCuH55Xk5tCtqfMg5buwzNOdDcMffNzPyXLHdrPpCZ72JqDK/XthY9AngMpdal13H1+c8i4umt9JPq8yt68nAx5RgupNTYtr22tRxNMw+lVqK9jqWU7xSAF7cmNZ/VuzPzf1F+sBxHqbVrvv8f2acMUILj31CC20bfz2RmXlPX/fuUH+ttn6/PB7cTozTz35qZP2f49qb8wHhIZl5ACVQ36rvEmq25zvW7zo/k2j9JwdXE/RVPROwHfDkz7659PJo+MetTfrnOhgMyc/fMXJilvX/vzDyxfRGKMhjn9sCf1v4mDz0ozVi31ccW8NBFjvr6imnkYRlwLFPHf6aa7T3ctvoFZx+u24c6lEJmfh94VGZ+EB4aZf3vmbrQzORzOejuteYuu8tbx52al58wdf63LwzNuu6oAUhb0z9ufbp1RmY+AXhNfb8JpTlq4F15mflVYL3M/BJARDwhIt5H+VUKZf+1P+/r1ufzW2nbUZp4oVWm2j/pTyk1dT/qs/nb+6Q1+3pxn7w+QP993dwxu7RPWW+sz3f12VYTFD3ccXg1pebt/p7PPpRz4I76+poVF6XpJ/SkiPi9+nplZbySqaE19m2lX0Cp6XtKROzUpNc+aJvVt4e00jehNJ+3/8mj+Ux8vM93w0LK90I7WGg+q1fW5xsy83aWPx/69ifLzKOAx9QfoNQ+X59ostdnkVPq82t60ner+Xh2LH/jwIFMDTMyNPVYr5uZ97XeN5r9MTba1zlKQNl8DzTX+XP6pA3dxARXOWF/xRMRh1OqSc+IiB9TvsQujog3Addm5o0rXcHsan6Fn5SZT+p5PD4z59fH92ewzqaW66WUJsX28Z81mXkvpb8MwKNb6b+Lcgfjpyi/rM8Huhy1vrmQJPDiKH/PcyRlXyxl6uLTrgHJlayvuWgN5S92MvN0SrMuwMei3CW5svl/FxHPiIj/oNR6/jtTdxk+nlJ7sHU93k2Q8q1W2oVMBQTtMi2q7+/sE2AOsn2TrQHT++3rlVlZ7WozbbnjUIOXbSJixxpoHgN8O0qH+Z3oOQcYXEsLpX9eY8MoA9g2ta4zLeMp9bldC/ZGSlPNfcBfxFTn+VczdQ40mvW9oM93w2b1e+FZTflb+dwrIt4InFbft8+H6xns/toh/xzgOZT9OMgXKM20+0bEY+ChAPFZlD6MUIPHiFgH2IeeGrgutI99TXoGpXa6cUSUu0ffyNT+GAt9rnN7AZdExOsoAfy/Zeb1vWmzkbeh//3NXJJz7694hiYzP0JPswalOXAuas7D7VY618w0zWWnZeYPYOr4R8RJA5cajlsod6jd2STUi9wbgJdk5qU1rcvAr6mteVxm/ivlbsG2puaitxl2lN5AaQLaEvhcRDy7TzNbM8L7P1L6Le2fmVfX9HvqLNfWwOjomv4a4InAg9ka8b3eRdSrqQVZZwb5bpocHjdg+tD3dWZextRdcG+qj14PnQOx8hs72zUbdwO/13r/OKaa6tsGlfFU4J3Aq+oPu0dRmlGfDOwCvJzSpPPB+vyCnuXb3w1XMkBT/og4sCZ9s6kZrtPb58OWlP6Qy4mI+ZS+hndQPpfN3ciDtnlvlDtID6E0fX6Y0ufyo5RA/kjgNRHxFuDPKE3Sv+27stXQc+zJzIuAi1rvj6f8U8bYGXCd6zffCbOQneVMTM2V5rSmyWnviOjbHyAidoipW8rXNE2ZfghQf0G9H/ibJrAagqYWZ4Xb9qvmotV3qINRyMy7mLo5YBfKnaH9vJNy4XpVE1h1qAksNqo1NtOxxu3rh9HU+v6yNrUsoQRZMMMyZuYNlEBjU0ow/JfAybUptPmRc0jtq3VjZv6yZ73Nd8PLBmU2Inr7ba2qL1Jq+Q7IFft+DnJKfX5NlOEoXkIp308ptaMLKDewHESrL5nGn8GVRi7Lf//dQPmF/PHoGeQtItam9Jnq1wdl4GpXMu23db2P6UlvOq2uS0fqBXpb4PzWheOv6vN1/Zda4XO5srIM0nRK/tMBAWvzS3dONRNk5reZGqH9TRGxV5/ZZrr/ZuISSpNZsGJn67Z2dcYaua+rfud6My7b1+ChWp+zator+swPpYzLgC/3mXZyfT6EEmQ0fbq+SWma3YEypEe//khN942XR8QLeydGGfNrvwF5mrbapLY7ZSysZQPmWeG8qt0NfkZpinsfpaa8qZ1q+mv9b0oN8iWrm0+tOQyuNAztZoRHTXOZD9TnlwDnRsReEfG4iHgW5Rbpq1sdNB86b6M1eGGP5gtuvT7Tmovy4XUd60TE3zB1d882Nb25gDbbG7Sth7LTJ+0wysX6yFZas74joww6uk5EHERpLgGYXztpP20aZWkujr3NWKdSLlyPpNyd2ev5lDsAz2qlNetfWXeB5bZT+/hcGBHvHbTAAM2+7Ncx+62UGpC1gM9HxLY905v9979rHtaPiCOAZn/Nr/2xFtb3D1euh8pU78z7XJOPiBi0TDvfq7Kvm232W39TvrX7TGvOsZk0W67MH/ZJ+yvKOff+VtqxlH53z4iIXZfLUGlOWwS8PzPvYEVfovww2p9yR+1dUMdCmQq8tqWMb9br25Qa3wBOjzJw6A5RBl19BeWmhJNb80/ns7pOz3N7uadExJ/Ucm0WddTvan5E9KtBO6U+H0IZI6txOqXGb2fg0yvJj8ZRzoExKnyMz4PyJXUKU2PlHD6D5b7UWq79+B6tAQ0pt7030w4ZsL5/qtPfXd8fydTgju9uLf8ryhf/qUyNSZSUPgvPolz8zq5pPwEe3Wdbe1N+tf+WcmFap6a/iNLMtF/P/O9tbee2uv1PUfpqJOW/Gb9LuSMOyphMCXy6vj+MqcFHm7GpHgCe2LOdP6L0H1kKvKymrVv3zdXA1j3zv4upsZfaA0I+gjLgYwKf6lnmhFZZpjWIKKXppRn/63pgkz7zPJmpsbV+RekQ3Ry/z/Ucv3soNwU0g4/eVV8HZfiAO2v623q28aLWvtu2lb4xpX9PUjogP6am70IJzJvz4+mt4zDTfX1wXc8y6nhiNT2YGjfqx5ThQ5pp61PGKUpWcyBEpj6j9wAvan0G/5Jy1+gBfZY5uO6rxcBTatp8Sg3UmdTzdcD2Pl7Xu2VP+uZ1nR9YybJ/SBkDr993w1E9+64ZCPhmSm1R77qCqTHWzqcOYlqPVXNsH6zn5a8pAeFdTH1W39JnnU0ZThxQ7uYfE0b+/exj9h4jz4CP8XlQBvBrj/LcPG6mjpz+MMuvTbmT6HLKhfVGyl03G7bmOZ2pEZCbx8/7rGs+pa/HPZSLcfviuQ7wsfql+Uvg7+uF5UDKcAsHUAKKXVpfrM3jt8Chfbb3BErTxtWUgOoH9QK2bZ95f4/SBHInpTn0jTX9mfUL/Fxg09b861P+BudeShPULjX92z374j7guJ5tbVm3dVPd1o/qcdq4Z76resp5D6Vv0wFMBSfN4xamRtHfq+b5KzzM4ISUztDtkcbb+b6oz/xH9cz3u7q9BZRA/G5Kk8wr6vzNhfA0So3pIUwFcc3jRkofuB9QLojtPLyzte3HUDrK3lK3c07Nz3trGU6idMb+/VXY1+f27IOllEFu/5Dl/20gKeMuHUo5N+/umbaEOkL9KnxWT6nr+Pt67K6nBKrfAv54JcvtTqmBu72eMxdRflCsMGJ8z3K7Ap8dMO1M6j8wrGT5zeu+vbkeqx/Q+qeJem61/7mhOV/e1Zpnqz779w7KmHtQguVLKJ+z/wc8raa/n/IZeNtK8ncWPT9uavozgC90+T3rY814RD0BJEkTIsr/Z76WMor4KaPNjTR+7HMlSZLUIYMrSZKkDhlcSdLkae6UG/Q/e5JWg8GVJE2QiHgUU8NW7NXz33OSOjBnOrTPnz8/Fy5cOOpsSNIaYdmyZVx11VUzWua+++5jrbXW4sEHp/6+cO2112abbbZh3rx5XWdRGmvf+973bs3MBf2mzZn/Fly4cCGXXjqsfwKRJEnqTkQM+pcImwUlSZK6ZHAlSZLUIYMrSZKkDhlcSZIkdcjgSpIkqUNz5m5BrdzCN5+5Qtri4/YdQU4kSdLKWHMlSZLUIYMrSZKkDhlcSZIkdcjgSpIkqUMGV5IkSR0yuJIkSeqQwZUkSVKHDK4kSZI6ZHAlSZLUIYMrSZKkDhlcSZIkdWil/y0YEfOATwJPB87OzMMj4hDgAWA+cHxmPjjdtGEWRJIkaS54uJqrXYEDgR2BvSJiZ2CPzDwZuBl4SUQsnE7acLIvSZI0t6w0uMrMb2TmPZl5L/ATYB/gZ3Xy5fX986aZtoKIOCwiLo2IS5csWbJaBZEkSZoLptXnqjYPXg/8DrijJi8FNqU0+00nbQWZeWJmLsrMRQsWLFilAkiSJM0l0+3QfgDwNmAJsEFNmwfcNoM0SZKksfewwVVE7Ad8OTPvBr4O7FAnbQ+cDZwzzTRJkqSx93B3Cx4OHAXcFhHrAh8ELomI11Ga+o7LzAci4mHThloKSZKkOWKlwVVmfgT4yMOtJDNPmE6aJEnSuHMQUUmSpA4ZXEmSJHXI4EqSJKlDBleSJEkdMriSJEnqkMGVJElShwyuJEmSOmRwJUmS1CGDK0mSpA4ZXEmSJHXI4EqSJKlDBleSJEkdMriSJEnq0CNGnQGtuoVvPnOFtMXH7TuCnEiSpIY1V5IkSR0yuJIkSeqQwZUkSVKHDK4kSZI6ZHAlSZLUoWkFVxGxR0R8s/X+5RHxq4i4LiIeHRFrRcTbI+LVEfHaOs8KaZIkSeNuWsFVZp4PrA8QEQFsk5mbZuZWmXkn8Ergpsz8DPDMiNhiQJokSdJYm0mz4LL6vCPw0oi4PCKeWtP2Aa6sr38GPHdAmiRJ0lib8SCimXkZ8JSI2B34TETsCMwH7qizLAU2HZC2nIg4DDgMYMstt5xx5sdVv8FBJUnSmmGVO7Rn5gXAecBGwBJggzppHnDbgLTedZyYmYsyc9GCBQtWNSuSJElzxoyDq9rnqnFDZt4OnAU8uaZtB5w7IE2SJGmsTfduwZ2AbWoT4BER8bWIeCNwWp3l88DWEXEwcGFmXjMgTZIkaaxNq89V7WfV3O33E+D4nukPAEc/XJokSdK4cxBRSZKkDhlcSZIkdcjgSpIkqUMGV5IkSR2a8SCimtv6DUC6+Lh9R5ATSZImkzVXkiRJHTK4kiRJ6pDBlSRJUocMriRJkjpkcCVJktQhgytJkqQOGVxJkiR1yOBKkiSpQwZXkiRJHTK4kiRJ6pDBlSRJUocMriRJkjpkcCVJktQhgytJkqQOGVxJkiR16BHTmSki9gDenpl7RcRawDHAz4G1M/PU6aYNpwiSJElzx7RqrjLzfGD9+vaVwE2Z+RngmRGxxQzSJEmSxtpMmgWX1ed9gCvr658Bz51BmiRJ0lhblT5X84E76uulwKYzSFtORBwWEZdGxKVLlixZhaxIkiTNLasSXC0BNqiv5wG3zSBtOZl5YmYuysxFCxYsWIWsSJIkzS3T6tDe4yzgycDFwHbAscA900zTCCx885krpC0+bt8R5ESSpPE3rZqriNgJ2CYidgQ+D2wdEQcDF2bmNTNIkyRJGmvTqrnKzMuA9t1+R/dMf2A6aZIkSePOQUQlSZI6ZHAlSZLUIYMrSZKkDhlcSZIkdcjgSpIkqUMGV5IkSR0yuJIkSerQqozQrjHgqO2SJA2HNVeSJEkdMriSJEnqkMGVJElShwyuJEmSOmRwJUmS1CGDK0mSpA4ZXEmSJHXI4EqSJKlDBleSJEkdMriSJEnqkMGVJElSh/xvQT2k3/8Ngv85KEnSTKxycBURuwFfABJ4DrAvcAuwYWaeUOc5sjdNkiRpnK1OzdWewGaZmRHxbGDjzDw+Io6JiF2AdXrTMvOiLjKt2dWvRsvaLEmS+lulPlcRsQmwH3BNROwN7ANcWSdfUd/3S5MkSRprq1RzlZm3ADtHxA6UpsHzgTvq5KXApkD0SVtORBwGHAaw5ZZbrkpWJEmS5pTVulswMy8HPglsAWxQk+cBtwFL+qT1Ln9iZi7KzEULFixYnaxIkiTNCatUcxURkZlZ3y4DjgWeD5wGbA+cDTzQJ01jwn5YkiT1t6o1Vy+OiPPq3YDnZeaFwNKIOBi4MzPP75fWVaYlSZLmqlXtc3U6cHpP2rF95lshTZIkaZw5QrskSVKHHKFdnbEfliRJ1lxJkiR1yuBKkiSpQwZXkiRJHbLPlYbKfliSpEljzZUkSVKHDK4kSZI6ZLOgZp1NhZKkcWbNlSRJUoesudKcYG2WJGlcWHMlSZLUIYMrSZKkDtksqDnLpkJJ0prI4EprlH4BFxh0SZLmDoMrjYVBQdd0GJhJkrpknytJkqQOWXMl9WF/L0nSqjK40sSbbpPidOczCJOkyWZwJXVsJp3uDdgkafwMPbiKiCOBW4ANM/OEYW9PmqtWp9P9dJspZytYs9lUkgYbanAVEc8GNs7M4yPimIjYJTMvGuY2pUnRdbC2ulYnsBtGsGYAKGlUhl1ztQ9wZX19RX1vcCVNsK77uA1j2+rGXAukV2fbsxWs+yNlPERmDm/lEScCZ2Tm1yJiX+DPM/P1remHAYfVt08E/ntomZkyH7h1FrYzF01y2WGyy2/ZJ9ckl3+Syw6TXf7ZKPtWmbmg34Rh11wtATaor+cBt7UnZuaJwIlDzsNyIuLSzFw0m9ucKya57DDZ5bfsk1l2mOzyT3LZYbLLP+qyD3sQ0bOAJ9fX2wNnD3l7kiRJIzXU4CozLwSWRsTBwJ2Zef4wtydJkjRqQx+KITOPHfY2ZmhWmyHnmEkuO0x2+S375Jrk8k9y2WGyyz/Ssg+1Q7skSdKk8Y+bJUmSOmRwJUmS1KGJCq4i4siIOCAi3jDqvAxbRMyLiNMj4pqI+EhNWxgRN0bEryLiuaPO47BFxG61rDdFxJMm5fhHxO4RcWtELI6ImyPi0N59Meo8DkNE7BER36yv14qIt0fEqyPitYPSxkVP2TePiK9FxPUR8dbWPGN7DrTLX9+/vJb1uoh49AQd+wNquRdHxG0RsXdNX25/jDTDHRpwnTskIg6KiKMiYq1BacM2McFV6694Pg1sFBG7jDpPQ7YrcCCwI7BXROwMvIwy6NmmmXnuKDM3S/YENsvMzSgDyk3K8V8GLMjMhcAHga/Q2heZ+dPRZW146t3I69e3rwRuyszPAM+MiC0GpI2FnrI/FdgPeDpwRERsUtP3ZEzPgXb5IyKAber33FaZeSeTc+yvruVeCJwEfGfA/hgX/a5ze2TmycDNwEsiYmFv2mxkbGKCK/r/Fc/YysxvZOY9mXkv8BPKn2f/CXBdRLxqtLkbvnpB2Q+4pv56m5jjn5kX5dSdKs3owfsxtS/G2bL63D7ePwOeOyBtnCwDyMyvZub9mbmEUt47+3wexlFz7HcEXhoRl0fEU2vapBz77wJExNqUG9Z+R//9MRb6XOf2oRxfgMvr++f1SRu6oQ/FMIfMB+6or5cCm44wL7MmIuYB12fmdcAfR8TmwJkRcUlmXjXi7A1NZt4C7BwROwBfAM5nwo5//cV2be++iIhdx+zXaz/9Pu8T9R0QEVsB52TmMsqPq4k4BzLzMuApEbE78JmI2JEJO/bA7pTvvL77o/Xjayw01zngd8Cva/JIP/eTVHO10r/iGWMHAG9r3mTmL4B/oPyaGXuZeTnwSWALJu/4/wXwxeZNa19sPbIczZ5+n/eJ+Q6oTUH7A+9tp0/SOZCZFwDnARsxQce+2hv4ejuhZ3+Mm+Y6N2c+95MUXE3cX/FExH7AlzPz7oh4bP3ChdI+/1+jy9nwtcoKpcr8WCbs+AOPy8xf9tkXV4wqQ7Oo/XnfDjh3QNq4ejXwicy8v+ezD2N+DvSU9YbMvJ0JOva1/Otm5n2t941mf4yN9nWOElDuUCc13/Pn9EkbuokJribtr3gi4nDgA8AZEfFj4BDg4oh4E6Wp6MaRZnD4XhwR50XEkcB5E3j8NwWaY9y7L5aOMGtDExE7AdvUZqDPA1vX431hZl4zIG0stMseEe8DjgG+HRFXAjsx5udAz7E/Isrdkm8ETquzTMSxr0nPAC5uzdJvf4yFPte5vYBLIuJ1wGbAv2Xm9b1ps5K3MWt6lSRJGqmJqbmSJEmaDQZXkiRJHTK4kiRJ6pDBlSRJUocMriRJkjpkcCVJktQhgytJkqQOGVxJkiR16P8DhfPsNEZ94rUAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 720x1440 with 7 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig = plt.figure(figsize=(10, 20))\n",
    "bins = np.linspace(0, 200, 100)\n",
    "\n",
    "for i in range(len(swapping_percentages)):\n",
    "    plt.subplot(len(swapping_percentages), 1, i+1)\n",
    "    _ = plt.hist([v for k, v in perturbed_networks[i].degree()], bins)\n",
    "    plt.title(\"Perturbation: {}\".format(swapping_percentages[i]), size=25)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Graph 0 is not connected\n",
      "Graph 0.25 is not connected\n",
      "Graph 0.5 is not connected\n",
      "Graph 0.75 is not connected\n",
      "Graph 1 is connected\n",
      "Graph Random_degreepreserved is not connected\n",
      "Graph Random_powerlaw is connected\n"
     ]
    }
   ],
   "source": [
    "for i in range(len(swapping_percentages)):\n",
    "    print (\"Graph {} is {}\".format(swapping_percentages[i], 'connected' if nx.algorithms.connected.is_connected(perturbed_networks[i]) else 'not connected'))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA2sAAAIlCAYAAABLkGA4AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy86wFpkAAAACXBIWXMAAAsTAAALEwEAmpwYAABzc0lEQVR4nO3dd5xcVfn48c+z6ZUECL2E3gQpoSeQhCYiRSxgQ6XZRfQnVhQsFEEF/FoAK00QUAHpIQlJ6AGRFqQTQgsQQk1I2fP74941k2Hv7E6ye7d93q/XvHbnnOfeee7c3Zl55p57bqSUkCRJkiR1Lg0dnYAkSZIk6d0s1iRJkiSpE7JYkyRJkqROyGJNkiRJkjohizVJkiRJ6oQs1iRJkiSpE+rd0Ql0ByuvvHIaOXJkR6chSZIkqZO6++67X04pjahnGYu1NjBy5EimT5/e0WlIkiRJ6qQi4ul6l3EYpCRJkiR1QhZrkiRJktQJWaxJkiRJUidksSZJkiRJnZDFmiRJkiR1QhZrkiRJktQJWaxJkiRJUidksSZJkiRJnZDFmiRJkiR1QhZrkiRJktQJWaxJkiRJUidksSZJkiRJnZDFmiRJkiR1QhZrkiRJktQJWaxJkiRJUidksSZJkiRJnVDvjk5AkiRJktrUO3Pg9Rnw2ozs51Y/gd4DOjqrulmsSZIkSep6UoJ5z1cUZQ8tKc7mv7h07HqHwfD3dkyey8FiTZIkSVLnlRrhraeyQuy1h5Y+Yrbwtdat47UZFmv1ioidgP8DNgX+DXwppXRf3hfAf4At8/DpKaXt877ewMnAYmA14IyU0r0V6z0AeD8wH3g6pfTLir7VgJ8Cs4EVge+klOZU9H83bx8OXJRSuqntt1ySJEnSUhYvgDcfywqypmLs9Rnw+sOweP7yrfv1GW2TY8k6rFiLiKHAt4BvAAn4JXBNRGyUUpoHfBD4I/BAvsjjFYv/HHgupXRqRKwI3BkR26eUXo2I7YEfAdullBZHxEUR8bGU0l8jogG4BvhCSumOiNgb+CuwT57TscDaKaUvREQf4L6I2D+l9Fh7Px+SJElSj7DorawAayrImoYwvvEYpMXt85ivPdQ+621nHXlkbTPgiKajWhFxGFlhtkVE3A18Bfg2cFdKqbFpoYgYAXwJ2AAgpTQnIh4BPk92tO37wD9S+t+e/idZ8fZX4EBgeErpjrxvAnB5ROwM3JUve3C+3oURMQn4JvC5dnkGJEmSpO6qepKPpiGMbz1dfi4eWatPRcHU5AmgEZgFjAHeC9wOzIyII1NKN+Zx4/OfMyuWnQHsERGnAnsCl1X1bRIRawF754/TlENjXujtkT/2ipX9+bLHLPNGSpIkSd1ZPZN8lCkaYPAGsMLmMHQzGLZVx+WyHDrTBCOjgQtTSi8ALwArRsTGwE+A6yJiXEppCrA2MCellCqWfR1Yi6zYGgi8UtVH3r92VV/lsmvn96uXXau5ZCPiaOBogHXWWaeOzZQkSZK6mLaY5KM9NPSDoZtkBdkKmy0pzoZsBL36dVxebaRTFGv5ZCKHU3UUK6X0SEQcAlxKNiRyCtn5bfOqVtEALMr7qOpvuvB3U39Ly85vpu9dUkrnAOcAjBo1KjUXI0mSJHUp7TnJx/LoPSQrxoZWFGQrbAaD1oOGXh2XVzvrFMUa8HXgZyml2dUdKaUUET8H/pA3zSKbqbHScGBWSumViJhX1T+8YrlZwJrNLZvfAIYBc6r6JEmSpO6jIyb5aI1+I/KibPOli7MBa0BEx+XVQTq8WIuITwJ3p5T+XSOsEWg6x+0moF9ErJlSejZv2xC4If/9OrLJS6jouz+l9EJEXEs2k2TTYzcA6+XL3k82nf9mwC3NrFeSJEnqWion+WgavthRk3xUGrj20kfImoqzfit1bF6dTEdfZ+1woC/wVESMJDvnbDeyST5eSCndGRGDgS8D/w8gpfRyRPwFOAD4bUSsRHadto/lq/0FcBrZtdQgm93xpPz3q4FTImKzlNIMsglHbkkp3ZPnc2a+3lsioh/ZZCb7ttf2S5IkScutU0/yseG7hy8O3RT6DO64vLqQWHqejhIfOOILwG+a6ToU2Jzs+mvTgfuAU1JKz1UsO4isIHuebAKQXzddTDvv/yzZbJLzyYZH/l9F34bA94DH8mW/k1Kam/f1Ipv+fx4wArg0pTSppW0ZNWpUmj59equ3XZIkSapb42J4++mlzyfrdJN8VAxf7CaTfLSViLg7pTSqrmU6qljrTizWJEmS1Gaam+TjtYfgjf92jkk+/neErGdM8tFWlqVY6/Bz1iRJkqQe6V2TfOTnlHWKST4qzyfr2ZN8dCSLNUmSJKk9ddpJPtapKMac5KMzsliTJEmSltdSk3xUXTS6Qyf56AWDN3CSjy7KYk2SJElqLSf5UIks1iRJkqRqXWqSj81h0Egn+eiGLNYkSZJqeecVuO94eO5aWPQmENn1o6IBaPpZ3RZL91fGNLdM5XK1lil6LJpZT838mnv8VuRc9Fg182tFzmU+P+9aLrJhip19ko+m353ko0exWJMkSSry8p0w7SPw9syOzkTd1VKTfFQUZ07yISzWJEmS3i0lePS3cM/XoHFhR2ejrm6pST4qzidzkg+1wGJNkiSp0qK34M7PwVMXdnQm6mqaJvmovkaZk3xoGVmsSZIkNXn9vzD1Q/Dagx2diTqz3kOWnnHRST7UTizWJEmSAGZeCrcfnk8iIgH9V6koxpzkQ+WzWJMkST1b40L493Hw3zNqx/UZCjv+AVbZDVIjkLKfqRFofHdb5X2aaftfe6rqb6atuXW967GaW9dyPH7Rcu39+C0t1x6P36tfNlTRST7UyVisSZKknuvtWTDtEHj51tpxw7aC0ZfB0I3KyUuSsFiTJEk91Qs3wS0fg3deqh233qdh+99A74Hl5CVJOYs1SZLUs6RGePBkuP8H+VC4Ag39YNSvYIMjPT9JUoewWJMkST3Hglfh1k/Bc1fXjhs0EsZcBituV0paktQcizVJktQzzLkbpn4Y3nqqdtwaH4BdzoO+w0tJS5KKWKxJkqTuLSV4/FyY/hVoXFAcFw2w1Y9h829nv0tSB7NYkyRJ3deit+GuL8KTf6kd128E7PpXWG2PcvKSpFawWJMkSd3T64/CtA/D3Ptqx628C4z+Gwxcs5y8JKmVLNYkSVL388zf4fbPwsLXa8dtcixscyo09CknL0mqg8WaJEnqPhoXwr3fgYd/Xjuu92DY6Y+wzkfKyUuSloHFmiRJ6h7mPQ/TDoGXptaOW2ELGHM5DN2knLwkaRlZrEmSpK7vxclwy6Ew/8XacSM/CTv8DnoPKiUtSVoeFmuSJKnrSglm/Az+811IjcVxDX1huzNgw89DRGnpSdLysFiTJEld04K5cPtnYNYVteMGrgNjLoOVti8jK0lqMxZrkiSp63n1Xpj6YXjz8dpxq78PdrkA+q1USlqS1JYaOjoBSZKkujz+R7hh5xYKtYAtfwRjr7ZQk9RleWRNkiR1DYvmwfQvwxN/rB3XbyXY5SJYfe9y8pKkdmKxJkmSOr83n4CpH8qGP9ay0o4w+lIYtHYpaUlSe7JYkyRJndusK+G2w2Dha7XjNv4KbHM69OpbTl6S1M4s1iRJUufUuAju+z48dGrtuN6DYIffw8hDy8lLkkpisSZJkjqfeS9mF7mePbl23NDNYMzlsMJmpaQlSWWyWJMkSZ3L7KlwyyEw7/naceseCjucC30Gl5OXJJXMYk2SJHUOKcHDv4B7vwVpcXFcQx/Y5uew8Zchorz8JKlkFmuSJKnjLXgN7jgcnvl77biBa2WzPa68Uzl5SVIHsliTJEkda+792bT8bzxaO261vWCXC6H/iHLykqQO1tDRCUiSpB7sifPg+h1bLtTe8wMYe62FmqQexSNrkiSpfIvnw93HwGPn1I7ruyLscgGssW85eUlSJ2KxJkmSyvXmUzDtwzDn7tpxK46CMZfBoHVLSUuSOhuLNUmSVJ5nr4bbPgULXq0dt9EXYNtfQq9+5eQlSZ2QxZokSWp/jYvh/h/Cgz+tHddrIOxwNqz3yXLykqROzGJNkiS1r/kvwS0fgxdvqh03ZGMYczkMe085eUlSJ2exJkmS2s9Lt8K0j8K8Z2vHrf1h2OkP0GdoOXlJUhdgsSZJktpeSvDfs+Df/w/SouK46A3bnAabHAMR5eUnSV2AxZokSWpbC9+AO46EmX+rHTdgDRj9Nxixazl5SVIXY7EmSZLaztwHYdqH4PX/1o5bdTzs+lfov0o5eUlSF9TQ0QlIkqRu4qmL4PodWi7UtvgujLvBQk2SWuCRNUmStHwWvwP3fB0e/U3tuD7DYJfzYc0PlJKWJHV1FmuSJGnZvTUTpn0EXrmzdtzwbWHMZTB4vXLykqRuwGJNkiQtm+euh9s+Ae+8Ujtug6Ng1FnQq385eUlSN2GxJkmS6tO4GB74MTzwIyAVx/XqD9v/Dtb/dGmpSVJ3YrEmSZJab/7LcOsn4IUbascN3hDGXA7DtyonL0nqhizWJElS67x8R3Z+2tvP1I5b6yDY6c/Qd4UyspKkbstiTZIk1ZZSNtPjPcdC48LiuOgFW58Cm34DIsrLT5K6KYs1SZJUbOGbcOfR8PRfa8f1Xw1GXwKr7FZOXpLUA1isSZKk5r32MEz7ELz2UO24VXaDXS+BAauVk5ck9RAWa5Ik6d2e/hvccQQserN23GbHwXt/Cg1+pJCktuYrqyRJWmLxAvj3N+GRs2rH9Vkhm0Rk7YPKyEqSeiSLNUmSlHl7Fkz7KLx8W+24Ye/NpuUfskE5eUlSD2WxJkmS4IUJcMvH4J2Xa8et/1kY9WvoPaCcvCSpB7NYkySpJ0uN8OBJcN8PgFQc19APtv81bHBEaalJUk9nsSZJUk/1zhy47VPw3DW14wavD6MvgxW3KScvSRJgsSZJUs/0ynSY9mF46+nacWvuDzv/BfoOLycvSdL/WKxJktSTpASPnQN3fxUaFxTHRQNs9VPY/Ljsd0lS6SzWJEnqKRa9DXd+Hp46v3Zc/1Vg14th1XHl5CVJapbFmiRJPcHrj8DUD8FrD9SOG7Er7Po3GLhGOXlJkgpZrEmS1N3NvBxu/ywseqN23KZfh61PgYY+5eQlSarJYk2SpO6qcSHc+214+Be143oPgZ3+BOt8qJy8JEmtYrEmSVJ39PZzcMsh8NK02nErvAfGXA5DNy4nL0lSq1msSZLU3bw4CW45FObPrh038lOww2+h96By8pIk1cViTZKk7iI1wkM/g/u+l/1epKEvbHcWbHg0RJSXnySpLhZrkiR1Bwtehds+Dc9eVTtu0Low+jJYaVQ5eUmSlpnFmiRJXd2cf2fT8r/1ZO241feFXS6AfiuWk5ckabk0dHQCkiRpOTz+B7hh5xYKtYCtfgxj/2WhJkldiEfWJEnqihbNg+lfgif+VDuu38qw619htT3LyUuS1GYs1iRJ6mreeAymfhjm/qd23Mo7w+i/wcC1yslLktSmOrRYi4idgP8DNgX+DXwppXRf3rcLcDjwKvAOcHxKKeV9g4HTgTnAasCJKaWnK9Z7FLAl0Be4OaX014q+TYBvAS8B/YHjUkrv5H29gZOBxfl6z0gp3dte2y9JUt2e+Sfc/hlY+FrtuI2/CtucBr36lpGVJKkddFixFhFDyYqmbwAJ+CVwTURsBKwMnA9snVJ6IyJOAr4DnJQvfiFwUUrpkojYFLgqIrZLKS2MiA8CB6eU9s0fZ2pEPJNSmpYXedcA41JKMyPiaOBXwNH5en8OPJdSOjUiVgTujIjtU0qvlvCUSJJUrHER/Od7MONnteN6D4Ydfw/rHlJOXpKkdtORE4xsBhyRUro5pTQFOAxYE9gC+H/AlJTSG3nsP4HjIqJ/RGwD7JO3kVJ6mKzo/HAeewJwccXjXAUcn/9+FDAzpTSzYr2HR8RaETEC+FLTsimlOcAjwOfbbpMlSVoG816AiXu2XKitsDnsc5eFmiR1Ex1WrKWU7sgLoiZPAI3ALGDv/H6TGcAKwKi879mmoYsV/XtExGrAVs0su3s+xHGp9aaUZgOvAWOB8XnzzKpl91jGTZQkafnNngrXbgOzb64dt+7HYO87YIVNy8lLktTuOtPU/aOBC1NKLwBrA69U9L1JNlRyrWb6AF7P+5rOoH6lqq8f2dDKWsuuDcxpOi+uqu9dIuLoiJgeEdNfeumlVm2gJEmtlhLMOB1uGgfzXyiOa+gDo/4PdrkQ+gwuLz9JUrvrFLNBRkSQTSZyTN6UgHmVIfltUTN9kBWdTX1U9TcVpK1ZtqjvXVJK5wDnAIwaNSo1FyNJ0jJZ8Brc/lmY9Y/acQPXhtGXwso7lpOXJKlUnaJYA74O/CwflgjZUMjhFf3DKtpnAbtXLT+8oq/p/pMVv79NNnNk9Xorl001+iRJKser98HUD8Gbj9WOW23v7Gha/5XLyUuSVLoOHwYZEZ8E7k4p/bui+VqyCUiabEg2hf/0vG/9iOhb1X9DSulFsksAVC97U0qpsXq9EbEKMBCYCNwE9IuINavXu3xbKElSKz3xF7hhpxYKtYD3/BDGXmOhJkndXIcWaxFxODAYeCoiRkbEthHxNeDXwNiI6JOHHkx25G1Rfh22W8kn/oiIzciui3ZFHns6cEDeF/nvp+R95wEb59PyN6339yml2Smll4G/VCy7Etn13/7QLhsvSVKTxfPhjqOz66ctrh6RX6HvijD2WtjqBGjoVVZ2kqQO0pHXWfsC8Jtmug5NKT0eEccAZ0XES8B84NSKmE8Ap+TT+I8E9kspLQZIKV0UEetExMnAAODMlNKted/ciPgI8LOImEk2vPKYivUeC5wWEceTTSxyUEqphauOSpK0HN58EqZ+GF69p3bcSjtk56cNWqecvCRJHS6WnvxQy2LUqFFp+vTpHZ2GJKmrefZfcOunYOHc2nEbfRG2/QX06ldKWpKkthcRd6eURtWzTGeZYESSpJ6jcTHc/wN48KTacb0Gwo7nwsiPl5OXJKlTsViTJKlM82fDLR+DFyfWjhu6CYy+HIZtUU5ekqROx2JNkqSyvHQLTPsozHuudtw6H4Udfw99hpSTlySpU7JYkySpvaUE/z0T/v1NSIuK46I3bHM6bPJViCgvP0lSp2SxJklSe1r4Otx+BDxzWe24AWvC6L/BiF3KyUuS1OlZrEmS1F7mPgBTPwRvPFI7btU9YNeLoP8q5eQlSeoSOvSi2JIkdVtPXgDX79hyobbF92Hc9RZqkqR38ciaJEltafE7cM+x8Ohva8f1HQ47nw9r7ldOXpKkLsdiTZKktvLW0zD1IzDnrtpxK24Hoy+DwSNLSUuS1DVZrEmS1BbmPgAT94T5L9aO2/BzsN0Z0Kt/KWlJkrouizVJkpbXnLth4t6wYE5xTK8BsP3vYP3DystLktSlWaxJkrQ8XroFJr8/m6K/yJCNYMzlMGzL8vKSJHV5FmuSJC2rFybCzfvD4reLY9Y+GHb8I/Rdoby8JEndgsWaJEnL4tlrYOrB0PhOcczWp8Bmx0FEeXlJkroNizVJkuo183K49WPQuLAgIGDHc2GDI0pNS5LUvVisSZJUjycvgNs/Damx+f7oBTufByM/Xm5ekqRux2JNkqTWeuwcuPPzQGq+v6EP7HoJrP3BUtOSJHVPFmuSJLXGw2fAPccW9/fqD2P+AWu8r7SUJEndm8WaJEkteeCncN/3i/t7D4Ld/wWrji0tJUlS92exJklSkZTgP9+Dh04ujumzAoy7Dlbeqby8JEk9gsWaJEnNSQnu/ho8clZxTL+VYNwNsOK2paUlSeo5LNYkSarWuBju+gI8fm5xTP/VYPwEGLZFeXlJknoUizVJkio1LoLbPwNPXVgcM3BtGH8TDN2otLQkST2PxZokSU0WL8gudv3M34tjBm8Ae9wEg9YtLy9JUo9ksSZJEsCieTD1Q/D8tcUxQzfLhj4OXKO8vCRJPZbFmiRJC9+EKQfAi5OKY4ZvnU0m0n9EaWlJkno2izVJUs+2YC5Mfj+8fFtxzEo7wrhroe/w0tKSJMliTZLUc81/GSbtA6/eUxyzym7ZBa/7DCkvL0mSsFiTJPVU856HiXvBaw8Wx6y2N+z2D+g9sLy8JEnKWaxJknqet56BiXvAG48Wx6x1IOx6CfTqV15ekiRVsFiTJPUsbzyeFWpvPV0cs+6hsPN50NCnvLwkSarS0NEJSJJUmtdmwIQxtQu19Q+HnS+wUJMkdTiLNUlSz/Dqf2DC7tm5akU2/jLseC409CovL0mSClisSZK6v5fvgAlj4Z2XimM2/xZsdxaEb42SpM7BdyRJUvc2ewpM3BMWzi2O2fJH8N6TIaK0tCRJaokTjEiSuq/nb4ApB8HiecUx25wOm32jtJQkSWotizVJUvc06wqY9lFoXFAcs/1vYKMvlJeTJEl1sFiTJHU/T18Ct34C0uLm+6MBdvwjrP/pcvOSJKkOFmuSpO7l8T/BnUdCamy+P3rDrhfBOh8pNy9JkupksSZJ6j4e+TVM/3Jxf0NfGH0ZrLV/eTlJkrSMLNYkSd3DQ6fBvccV9/caCLtfAavtWV5OkiQtB4s1SVLXlhLcfyI8cGJxTO8hMPYaWGV0eXlJkrScLNYkSV1XStnRtBmnF8f0HQ7jroeVti8vL0mS2oDFmiSpa0qNMP0r8OhvimP6rwLjboThW5WXlyRJbcRiTZLU9TQuzmZ8fOLPxTED1oDxN8EKm5aWliRJbcliTZLUtTQuhFs/BTMvKY4ZNBL2uAkGr19aWpIktTWLNUlS17F4Pkz7KDx7VXHMkI1h/AQYtHZ5eUmS1A4s1iRJXcOit2HKQfDCjcUxK7wnK9QGrFpaWpIktZeG5V1BROwfEWdEhFcYlSS1j4Wvw6T31S7UVtwO9pxsoSZJ6jbqKtYiYnZEPBkRP8jvHwr8EzgK+GtEHNb2KUqSerR35sDEveClqcUxI3bNJhPpt1J5eUmS1M7qHQY5HNg3pXR3RPQBTgceBHYDBgCXA+e1bYqSpB5r/uysUJt7X3HMquNh9yuh96Dy8pIkqQT1Fmv3ppTuzn//FLA6cGhKaS4wNyJSWyYnSerB3n4WJu4Jrz9cHLPGfjD6Uug9oLy8JEkqSb3F2nyAiBgAfBe4IaU0LW8bCmzRtulJknqkN5+CiXvAm08Ux6z9YdjlQujVt7S0JEkqU73F2qURMRUYRnZU7UCAiFgZ+DMwpC2TkyT1QK8/khVqb88qjhn5Kdjpj9DgpMaSpO6rrne5lNJZEfEgsA1wfUrpwbzrUGBSfpMkadnMfSAb+jj/xeKYDT8H2/8GYrknNJYkqVOr+yvJlNJNwE1Vbf/XZhlJknqmOXfDxL1hwZzimE2OhW1/DhHl5SVJUgep+2vJiNgsIs6LiCvy+1tFxCkRMaLt05Mk9Qgv3Qo3ja9dqG3xfQs1SVKPUteRtYjYG7gK6AM8BZBSui8iVgfuj4ixKaUa03ZJklTlhYkw5QBY9FZxzHtPgi2+U15OkiR1AvUeWTsVuBXYH3ihqTGldH3+65ltlJckqSd49hqY/P7ahdp2Z1qoSZJ6pHqLtWHA3imlq8mn8a8QwJi2SEqS1APMvBymHgSN7xQEBOxwLmzy1TKzkiSp06h3gpGHUkoLqxsjYitgBPBSm2QlSerenrwAbv80pMbm+6MX7HwejPx4uXlJktSJ1Htk7f6I+FhlQ0SsAfwJSMBlbZWYJKmbeuwcuO2w4kKtoQ+MvtRCTZLU49V7ZO0E4NqI+BqwTkTcAOxIdjHsu4Fvt2l2kqTu5eEz4J5ji/t79Ycxf4c19i0tJUmSOqu6jqyllOYDewK/AibkzdcDnwd2TSm90bbpSZK6jQd+WrtQ6z0Ixl5roSZJUq7eqfsHp5TeBC7Ib5Ik1ZYS3Pd9ePCk4pg+K2SF2oidy8tLkqROrt5z1v5R1BERq0bElIh4IiJ+ERGrLGdukqSuLqXsaFqtQq3fSrDHRAs1SZKq1FusrRAR50TEfRHxr4jYpaLvBGBX4GDgG8ChETGgjfKUJHU1jYvhzs/Bf2tcgrP/arDHzbDituXlJUlSF1FvsbYacCSwMbADMDkitsv7mt5pZ6SUEvCXPFaS1NM0Lsqm5n/83OKYgWvDnlNg2Bbl5SVJUhdSb7G2IvA1YFBKaRXgwyyZAXIgQErpnfzna8B2zaxDktSdLV4AtxwCT11YHDN4A9hrKgzdqLy8JEnqYuot1h5OKZ2VUloMkFK6Elg57+sFLK6KX3s585MkdSWL5sGUg+CZvxfHDN0sO6I2aN3S0pIkqSuq9zpr8yKiT0ppIUBEbAvMr1jXW1XxTjIiST3FwjdhygHw4qTimOFbw7gboP+I0tKSJKmrqrdYmwbcHhE3AquTDYO8JSIOBdYCXo+IASmlefm5bNVH2iRJ3dGCuTD5/fDybcUxK+0I466FvsNLS0uSpK6s3mLtx8AWwHH5/XuATwCfA/oAfwCuiIjbyWaF/Gsb5SlJ6qzmvwyT9oFX7ymOWWU32P1f0GdIeXlJktTF1VWspZTeBg6IiJHA0JTSfXnXTyLi5/kRtTXJLpjdCPy6TbOVJHUu816AiXvCaw8Wx6y2N+z2D+g9sLy8JEnqBuo9sgZASumpZpoXRsQqKaVngXHLlZUkqfN76xmYuAe88WhxzFoHwq6XQK9+5eUlSVI3Ue9skLUMBD7dhuuTJHVWbzwOE8bULtTWPRRGX2qhJknSMio8shYRD5BfO60VGoCVgH8Dp7VBXpKkzuq1GdkRtXnPF8es/1nY4Vxo6FVeXpIkdTO1hkHeTHak7EGy6fkbgSHAtsCzwGNV8QmIehOIiC3JLqw9I6X0k6q+q4AP5HefBdZPKS3I+75LdpHu4cBFKaWbKpbbBTgceBV4Bzg+pZTyvsHA6cAcYDXgxJTS0xXLHgVsCfQFbk4pOUmKJDV59T8wcS9456XimI2/DNudCdGWgzckSep5ahVrZwCPpZR+2dQQEecDv0op/aU6OJ9YpK5hkBExiOyI3Djg0aq+bYEHgDPzpucqCrVjgbVTSl+IiD7AfRGxf0rpsYhYGzgf2Dql9EZEnAR8BzgpX8+FZMXdJRGxKXBVRGyXUloYER8EDk4p7Zs/ztSIeCalNK2e7ZKkbunlO2DS+2Dh3OKYzY6DrU+BqPu7O0mSVKXwa8+U0qPAn6qa12muUMvjnwU2r+fBU0pvpZQmA4830/09sqN7N6eUJqSUHgKIiN7A94GL83UsBCYB38yX+3/AlJTSG/n9fwLHRUT/iNgG2CdvI6X0MFnB+uE89oSm9eauAo6vZ5skqVuaPSWb9bFWobbljyzUJElqQzXHqKSU5lY1DYmIvs3F5kfW3reMeSx18eyIWB8YA1wLPB8RH6vo3o5s+OMTFW0zgD3y3/dupm8FYFTe92xK6Z3qZSNiNWCrZpbdPS8QJalnev6G7IjaojeLY7Y5HbY83kJNkqQ2VO8JBROAKyNiw8rGiNgLuBH4b1sklVJ6IqW0CrAWcAlwUUR8Mu9eO//5SsUir+exTf2VfW+SnU+3VjN9lcs2LV+93n7AytU5RsTRETE9Iqa/9FKNczckqSubdSXcvD8snlccs/1vYLNvlJeTJEk9RL3F2g/Jhg3+NyJmR8RDEfE6cB2wHtCm79YppWdTSl8CfgF8t6k5/zm/IrQBWFTRX/mpIvLbomb6KpdtWu+8qj4q1l2Z2zkppVEppVEjRoxo9TZJUpfx9CUw9WBoXNB8fzTATn+Gjb5QalqSJPUUdRVrKaV5ZEMJvww8Q1agNZINV9w1pXR7m2eYOR0Ymf8+K/85rKJ/eEX7rPw+VXGzmumrXHZWxf3KvrfJZo6UpJ7j8T/BrR+HtLj5/ugNu/wV1vfympIktZe651VOKTWmlH6bUtoupTQgpTQspfSBlNI97ZFgrhG4I//9HmA2sFlF/4bADfnv1zbT9yowPe9bv+q8uw2BG1JKL5JdJ6562ZtSSo1ttB2S1Pk98mu443Aoeulr6Atj/g7rfrTcvCRJ6mHqLtYiYuWI+FFE/Dq/v1VEHBsRA5Yjj6ahik2PsXt+Hhz51PwnAF+C/83+eCZwQN7fDxgPNF1i4NfA2Hw5gIOBn6WUFqWU7gNuJZ+MJCI2I5vc5Io89vSK9Ub++ynLsV2S1LU8dBpM/3Jxf68BsPu/YK39y8tJkqQeqq5ZDiNiO7IjWMOBpwBSSvdFxFbA3RGxZ0rpuTrW1wB8kOxoVq+IuD6ldCuwCfCziHgEuBf4eUqpcvKSU4GTI+JEYATwhZTSk3k+j0fEMcBZEfES2bltp1Ys+wnglHwa/5HAfill43xSShdFxDoRcTIwADgzz0eSureU4P4T4YETi2N6D4GxV8MqY8rLS5KkHixSSi1HNQVHTCWbNv83wKdTSjtU9L0CTEwpfaTNs+zkRo0alaZPn97RaUjSskkJ7j0OZpxeHNN3OIy9DlbeoThGkiQVioi7U0qj6lmm3uuHrQ9snlJ6LSI+VNU3n+yC05KkriI1wvSvwKO/KY7pNwLGT4DhW5WXlyRJqrtYuy+l9Fp1Y0SsB6wOzG2LpCRJJWhcDHceCU/8uThmwBow/iZYYdPS0pIkSZl6Jxh5IiJ2q2yIiEHAOWTXKbumrRKTJLWjxoVw6ydqF2qDRsJeUy3UJEnqIPUeWTsemBQRDwPrRcQ5ZNddW4dswpFvtm16kqQ2t3g+TPsoPHtVccyQjbOhj4PWLi8vSZK0lHovij0H2BW4j+wi0mPJrnl2CjAqpfR8WycoSWpDi96Gmw+oXait8B7Y82YLNUmSOli9R9ZIKb0J/DS/SZK6ioWvw+QPwEtTi2NW3A7GXQ/9ViovL0mS1Ky6izVJUhf0zhyYvC+8cmdxzMq7wNhroO8K5eUlSZIKWaxJUnc3fzZM3Avm3lccs+p42O0K6DO4vLwkSVJNFmuS1J29/SxM3BNef7g4Zo33w+jLoPeA8vKSJEktsliTpO7qzadg4h7w5hPFMWt/CHa5CHr1LS0tSZLUOhZrktQdvf5IVqi9Pas4ZuQnYac/QYNvBZIkdUZ1Td0fEVfW6BsSEedFxD0R8dOIcDyNJHWEuQ/AhN1qF2obHg07/8VCTZKkTqyuYg1YOSK+GxFXRsT/RcQGFX3HA58AjiGb1v9zEVHv+iVJy2PO3TBhd5j/YnHMJl+D7X8HvkRLktSp1ftOvSbwY+ADwBeBf0fEhnnf6Pzn9JTS28DFwKfbJEtJUsteuhVuGg8L5hTHbPF92PYXEFFeXpIkaZnUW6ytCJwFrAMMBr4P/DDvGwKQUpqX/3wB2LVt0pQk1fTCRJi0d3bh6yLvPQne+2MLNUmSuoh6T1Z4KqV0bMX9syLipvz3XsDiqvi1lzkzSVLrPHsNTD0YGt8pjtn2DNj0mNJSkiRJy6/eYu3VyjsRsV7F3V7AvKr41ZclKUlSK828HG79GDQuLAgI2OEc2PDIUtOSJEnLr95i7aF8RshryAqxo4GHI2Kn/P4bTYERsTH1D7OUJLXWkxfA7Z+BVD2oIRe9YKe/wHqfKDUtSZLUNuot1r4HXA/8Jr8/CzgS+BbZOWxXRsQVwBXAYcDVbZSnJKnSY+fAnZ8HUvP9DX1g14th7YNLTUuSJLWduoq1lNIrEbEz2cQhQ4EJ+cyPR0fE6SmlRyJiS+DvZMXbx9o8Y0nq6R4+A+45tri/V38Y83dYY9/SUpIkSW2v7quhppQWApObaX8kIlZJKd0fEZsCfVJK89sgR0lSkwd+Cvd9v7i/9yDY/SpYdVx5OUmSpHbR1ueU3QSQUlpsoSZJbSgl+M/3ahdqfVaAcTdYqEmS1E3UdWQtIoYCXwdGAQOAyov1rAZs0napSZKArFC751j475nFMf1Wygq1FbctLy9JktSu6h0G+Tdgb+Al4O2qvsFtkpEkaYnGxXDXF+Dxc4tj+q8G42+EYe8pLy9JktTu6i3WtgQ2TSk9Ut0REX2BB9okK0kSNC7KpuZ/6sLimIFrw/ibYOhGpaUlSZLKUW+xdk1zhRpASmlBRHgxH0lqC4sXZBe7fubvxTGD14c9JsKgdcvLS5IklabeCUaujoha42x+ujzJSJKARfNgykG1C7Whm8GeUy3UJEnqxuo9srYV8PWImNBM3+qAU5BJ0vJY+CZMOQBenFQcM+y92Tlq/UeUl5ckSSpdvcXax4GNgdEF/Wn50pGkHmzBXJj8fnj5tuKYlXaAcddB3+GlpSVJkjpGvcXaX4AJwMtAY0V7ACOBy9smLUnqYea/DJP2gVfvKY5ZZbfsgtd9hpaXlyRJ6jD1FmtXppQeLOh7KiK+tpz5SFLPM+8FmLgnvFb08gqstjfs9g/oPbC8vCRJUoeqa4KRGoVakz2WIxdJ6nneegYm7Fa7UFvrQNj9Sgs1SZJ6mMIjaxHxOeDtlNL5FW2H1VjXmsChwGfaLDtJ6s7eeBwm7gFvPV0cs+6hsPN50NCnvLwkSVKnUGsY5CnAq8D5FW3fBDYnO0etOU4wIkmt8dqMbOjjvOeKY9b/LOxwLjT0Ki8vSZLUadQq1vYE5le1/YHsCNr1wMKqvjWB37RdapLUTc35dzaZyDsvFcds9CUYdRZEvZfDlCRJ3UVhsZZSuruZ5vOB1VNKDzS3TESs1FaJSVK3NHsq3PwBWPh6ccxmx8HWp0AUDWKQJEk9Qb2zQX6TbGhks8VaSulXy52RJHVXz14D0z4Ei6sHLVTY8kR4z/EWapIkqb7ZIIEvAe9pj0QkqVt76mKYcmDtQm2b02DLH1ioSZIkoP5i7U9kF8ZuVkRcuHzpSFI39Ojv4NaPQ1pUHDPq17DZ/ysvJ0mS1OnVOwzyH8BRETECeLaiPYAtgQ8Dn2ij3CSpa0sJHjoF/vPd4pjoBTv9BdbzpVOSJC2t3mLtD8C6wCHN9AVO3S9JmZTg3m/BjNOKY3r1h13/BmvtX15ekiSpy6i3WLsYWA2YBiyu6lsd+GFbJCVJXVrjYrjrc/D4H4pjeg+B3a+CVXcvLy9JktSl1FusXQhEjan7N1z+lCSpC1v8Dtz6SXjmsuKYfivDuOtgxe3Ky0uSJHU5dRVrKaUHASJifWBkSmliRKwHvJ1SejGldGR7JClJXcKit2DKwfDCDcUxA9eCcTfCCpuWl5ckSeqS6poNMiIGRsQFwKPA7/Pm2cAZEXFCG+cmSV3Hgldh4l61C7UhG8Fe0yzUJElSq9Q7DPIXZJOL3AMMAkgpvRURnwdejIj5KaVT2jhHSerc5j0Pk/aBufcXxwzfGsZeBwNWLS0tSZLUtdV7nbWDgf1TStsDLzY1ppReA54HvtiGuUlS5/fmk3DjmNqF2ojRsMckCzVJklSXeo+szUgpXZf//r9p+iOiL7AG0NhWiUlSpzf3QZi0V3Zkrcjq+8KYy6D3wPLykiRJ3UK9R9ZeiYgh+e9R0X4s0Aeo8dWyJHUjL98BE3arXaitcwjs9k8LNUmStExqFmsRUd1/BnBdROwL9I+IXSLi58BJZEfVvM6apO7vhZtg4h6wYE5xzIafh10uhF59y8tLkiR1K4XFWkTsCbwREZ9uakspTQF+DJwJ7AhMJTuq9hxwaErp2vZNV5I62DP/gMnvz6bpL7L5d2D730BDr/LykiRJ3U6tc9Z+BrwATKtszM9Z2zgiNgBWBeaSncuW3rUGSepOnvgz3HEEpBqn5279M9j8m6WlJEmSuq9awyBXBkallB5vaoiI3zb9nlJ6PKV0a0rpoaZCLSI+136pSlIHevgMuP2zxYVaNMAO51qoSZKkNlOrWJuUUnq1qm2TFtZ39HLmI0mdS0pw3w/gnmOLYxr6wK6XwIZHlpeXJEnq9moNg7w4IiYBdwFvk00gMjIijmfpmSABegGbAVu3R5KS1CFSI9z9NXjkV8UxvQbCbv+A1fcuLS1JktQzFBZrKaVrI6IX8FNgy4quE2usz/PWJHUPjQvh9sPhqQuKY/oMg7HXwIidS0tLkiT1HIXFWkSsD3wF+BpwJ7AScAlwaDPhDcAWwMVtn6IklWzRPLjlEHj2quKY/qvCuBtg+Fbl5SVJknqUWsMg/w/YHTglpfQW8FZEPJ5Serog/smIuKTNM5SkMi18HW4+AGbfXBwzaCSMvxGGbFhaWpIkqeepVaztAOyeUrqjom1qC+s7Z/lTkqQOMv8lmLwvzLm7OGaFzbMjagPXLC8vSZLUI9WaDXJiVaEGcEgL6zt9OfORpI7x1jMwYbfahdqK28OeUyzUJElSKWodWbslIn4E3M6S2SCHRcQYimeD3L5dspSk9vT6IzBxL3h7ZnHMquNht39CnyGlpSVJknq2WrNBnhkRpwFXsPQRuMkFiwTOBimpq3n1Xpi0D8yfXRyz1kGw61+hV/+yspIkSap5ZI2U0jcj4lRgR7LZIL8DnNJMaNNskF9r6wQlqd3MngY375dNKlJkvU/Djr+Hhpovl5IkSW2uxU8fKaWXgasBIuKzKaW/FMVGxNg2y0yS2tOz18C0D8PiecUxmxwD2/4CotbpvZIkSe2j3k8gH2mhf/SyJiJJpXnqYphyYO1Cbcsfwba/tFCTJEkdpq5PIflRtlqOX45cJKn9Pfo7uPXjkBYVx2x3Fmx5PET1XEqSJEnlKRwGGRH7AfNSShMr2narsa41ga8A32u79CSpjaQED50C//lucUz0gp3+DOt9srS0JEmSitQ6Z+0i4FVgZEXbn4F1C+KdDVJS55QS3PstmHFacUxDPxh9Kay1f3l5SZIk1VCrWPsk2fXVKv0R2JRs+v6FVX1r4lE1SZ1N42K463Pw+B+KY3oPgd2vhFXHlpaWJElSS2pdZ+2qZpr/DKyWUpre3DIRMbiN8pKk5bf4Hbj1k/DMZcUx/VaCsdfBSqPKy0uSJKkV6rpwUEppFjCrub6I6Av8tS2SkqTltugtmHIwvHBDcczAtWDcDbDCZuXlJUmS1Eq1JhhZp471NADrA3sD317epCRpuSx4FSbvBy/fVhwzZCMYfyMMKjoNV5IkqWPVOrJ2K7B6net7GIs1SR1p3gswaW+Ye39xzPCts6GPA1YtLS1JkqR61SrWfg18ArgamA80AhsDBwBXAI9WxW8PPNsOOUpS67z5JEzcC958vDhmxGjY/SroO6y0tCRJkpZFrWLtd8DslNL/plCLiBuBHVNKD1UHR0Q/4KS2T1GSWmHug9kRtXnPFces/j4Yczn0HlheXpIkScuooagjpfRqZaGW69NcoZbHv0N25E2SyvXynTBht9qF2jqHwG5XWKhJkqQuo7BYKzAwItZqriMixgC7LX9KklSHFybCxD1gwZzimA0/B7tcCL36lpeXJEnScqq3WPs9cGtEHBkRm0fEKhGxXUT8FLgGuL7tU5SkAs/8EybvC4veLI7Z/Nuw/W+hoVdpaUmSJLWFeq+zdk5ErE52PltUdAXwBHBMvQlExJZkM0jOSCn9pKJ9E+BbwEtAf+C4fKglEdEbOBlYDKwGnJFSurdi2QOA95NNjPJ0SumXFX2rAT8FZgMrAt9JKc2p6P9u3j4cuCildFO92ySpBE/8Be44HFJjcczWp8Lmx5WXkyRJUhuqq1gDSCmdGBGXA58FNgfeAaYBZ6eU3qhnXRExCFgJGEfF7JIRMZjsSN24lNLMiDga+BVwdB7yc+C5lNKpEbEicGdEbJ9SejUitgd+BGyXUlocERdFxMdSSn+NiIZ8vV9IKd0REXuTXch7n/xxjwXWTil9ISL6APdFxP4ppcfqfZ4ktaOHz4R7vlYjIGCHs2HDo8rKSJIkqc3VOwwSgJTSAymlb6SU9k0pHZRSOr3eQi1fz1sppclA9TzbRwEzU0oz8/v/BA6PiLUiYgTwJeDifB1zgEeAz+ex3wf+kVJaXLHsD/PfDwSGp5TuyO9PAHaJiJ3zo3Xfr1jvQmAS8M16t0tSO0kJ7vth7UKtoQ+MvsRCTZIkdXnLVKy1g8VV9/cmG1YJQEppNvAaMBYYnzfPrIifAeyRHznbs3LZvG+TfGKU6vU2khV6ewDbkQ1/rF52j2XdKEltKDXC3cfAAz8qjuk1EHa7Ctb5SHl5SZIktZO6h0GWZG3g/qq214G1gEXAnJRSaqZvRWAg8EpVH3n/2lV9lcuund+vXrZo9sujyYdlrrPOOi1ukKTl0LgQbj8cnrqgOKbPMBh7NYzYpbS0JEmS2lPhkbWIGBERZ0fENmUmlEvAvKq2BrJCraU+qvqbtrG1y85vpu/dCaZ0TkppVEpp1IgRI2pujKTlsGgeTP1Q7UKt/6qw580WapIkqVupNQzyLOBIYGQ5qSxlFtlsjJWG5+2FfSmlV8iKseFVfbS0bH4DGNZMn6SOsPD1bGr+Z68qjhk0EvaaBsO3Ki0tSZKkMtQq1vYGPpxS+kdTQ0QcWGtlEbFuG+V1LbBZxXpXIRveOBG4CegXEWtWxG8I3JD/fl3lsnnf/SmlF5pZbwOwXr7sPWTT+VcvewOSyjf/ZbhpPMy+uThmhc2zQm3IhuXlJUmSVJJaxdq0ykIt19J11M5bxjyCpa/bdh6wcT4tP8DBwO9TSrNTSi8DfwEOAIiIlYBNgT/ksb8APlCxroOBk/LfrwYWRkRTQbY3cEtK6Z589sczK9bbj2wyk18iqVxvz4IJY2DO3cUxK24Pe06BgWsWx0iSJHVhtSYYuTsiDgduB94GGoH+EbE2SxdWAL3IrrlW1/lt+ZGtD5IdzeoVEdenlG5NKc2NiI8AP4uImWRDEysLxWOB0yLieLIJQA5KKb0GkFKaFhHnRMQZZOefTUspNU3Hvzi/YPb3IuKxfNlDK9Z7KnByRJwIjCC7HtuT9WyTpOX0+qMwcU94e2ZxzKrjYbd/Qp8hpaUlSZJUtlh6UsWKjuyi0BcCH2bJ5BstSin1apvUuo5Ro0al6dOnd3QaUtf36r0waR+YP7s4Zq2DYNe/Qq/+ZWUlSZK03CLi7pTSqHqWKTyylg8L/GhEbAvsDKwEfBb4czPhDcAWZEfJJKl+s6fBzR+Aha8Vx6x3GOz4B2jorFcdkSRJajstfuJJKd1DNvkGETEupXRiUWxE3NeGuUnqKZ67Npuef3H1lTUqbPxV2O6XELVOtZUkSeo+6v3U85UW+g9Y1kQk9VBPXwI3H1C7UNvyRNjuDAs1SZLUo9Q1liil9EDT7xGxIdl1yB5PKc3J+59q0+wkdW+Png13fYGap8VudyZs8tXSUpIkSeos6v6aOiJ2joj7gf+SzRT5YkRcFRHrtXl2krqvB0+Buz5PYaEWvWDn8yzUJElSj1XXkbV8spEJ+XKTgMeARcBGwK0RsbNH1yTVlBLc+22Y8bPimIZ+MPpvsJYjqyVJUs9V75RqPwGmAp9JKb1Q2RER44ATgU+3UW6SupvGxdnRtMd/XxzTezDsfiWsOq68vCRJkjqheodBbg4cXF2oAaSUJgGrtklWkrqfxe/ArR+rXaj1Wwn2mGShJkmSRP1H1h5LKb3dXEdE9AY2WP6UJHU7i96CKQfDCzcUxwxYE8bfCCtsVl5ekiRJnVi9R9bejIgtqhsjYgXgL8CLbZKVpO5jwaswca/ahdrgDWHvWyzUJEmSKtR7ZO2nwJSIuBx4FBgMbAzsD/QD9m3b9CR1afNegEl7w9z7i2OGvRfGXQ8DHEUtSZJUqd7rrN0VEQcB5wBHVnQ9DRyTUprQhrlJ6srefDI7ovbm48UxI3aF3f8FfYeVlpYkSVJXUe+RNVJKU4HNImIUsB4wC7g7pbSgrZOT1EXNfTA7ojbvueKY1d8HYy6H3gPLy0uSJKkLqbtYa5JSmg5Mb8NcJHUHr9wFk94HC+YUx6xzSHbB6159y8tLkiSpi6l3ghFJKvbiJLhpfO1CbcPPwS4XWqhJkiS1wGJNUtuYdQVM2hcWvVkcs/m3YfvfQkOv8vKSJEnqopZ5GKQk/c8T58Edh0NaXByz9amw+XHl5SRJktTFWaxJWj4Pnwn3fK1GQMAOZ8OGR5WVkSRJUrdQ1zDIiPhOrfuSepCU4L4TahdqDX1g14st1CRJkpZBzWItIqZFxM8j4uCIWBXYqyqk+r6kniA1wt3HwAMnFsf0GgC7XQnrfrS8vCRJkrqRloZB7gXsBIwGjga2i4hLgbvzW5/2TU9Sp9O4EG4/Ap46vzimzwow9ursoteSJElaJjWLtZTSPGBSfiMiJgHfBrYH9gW2iIg7gAeB24HbU0r3tWvGkjrO4vkw7RB49srimP6rwrjrYfh7y8tLkiSpG6p3gpGUUnoceBy4OCK2AfYAtgB2BL5MdgROUnez8HW4+UCYPbk4ZtC6MO5GGLpRaWlJkiR1VzWLtYg4D7gVuA1o7ohZSik1Avfnt9+3eYaSOt78l2HyvjBnenHM0M1g/I0wcM3y8pIkSerGWpoN8lRgEfBV4E5g84g4OSI+HBHrtXt2kjre27NgwpjahdqK28OeUyzUJEmS2lBL56w9SHY+2u8B8vPTpgDbAZ8ARkXE1WRH3m4D7kgpvdmuGUsqz+uPwsQ94e2ZxTGrjoPdroA+Q8rLS5IkqQeo6zprwNsppWtTSj9JKX2QbEbIo4EZwPuAq9o6QUkd5NV7YcLo2oXaWgfC2Gss1CRJktpBvROM3Fh9P6X0LHB5fpPUHcyeBjd/ABa+Vhyz3mGw4x+god6XEUmSJLVGXUfWUkon1bovqRt47lqYtHftQm3jr8JOf7JQkyRJakf1DoOU1J09fQncfAAsnlccs+WJsN0ZEL58SJIktSe/FpeUeewcuPPzQCqO2e5M2OSrpaUkSZLUk1msSYKHToV7v13cH71gxz/C+oeVl5MkSVIPZ7Em9WQpZUXajJ8VxzT0g9GXZDM/SpIkqTQWa1JP1bgY7voCPH5ucUzvwbD7ldm11CRJklQqizWpJ1q8AG77JMy8tDim30ow9lpYafvy8pIkSdL/WKxJPc2it2Dqh+D564tjBqwJ42+AFTYvLy9JkiQtxWJN6kkWvAqTPwAv31ocM3hDGH8jDB5ZWlqSJEl6N4s1qaeY9wJM2gfm3lccM2wrGHc9DFitvLwkSZLULIs1qSd48ymYuBe8+VhxzMq7wNiroe+wsrKSJElSDRZrUnf32kNZoTbvueKY1d8HYy6D3oPKy0uSJEk1WaxJ3dkrd8Gk98GCOcUx63wUdj4fevUtLy9JkiS1qKGjE5DUTl6cBDeNr12obXg07HKRhZokSVInZLEmdUezroBJ+8KiN4tjNv8WbP87aOhVXl6SJElqNYdBSt3NE+fBHYdDWlwcs/UpWbEmSZKkTstiTepOHj4T7vlajYCAHc6GDY8qKyNJkiQtI4s1qTtICe4/ER44sTimoQ/sfAGs+9Hy8pIkSdIys1iTurrUCHcfC4+cVRzTawCM+Tus8b7y8pIkSdJysViTurLGRXDHEfDkecUxfVbILnY9Ytfy8pIkSdJys1iTuqrF82HaIfDslcUx/VeBcTfA8PeWl5ckSZLahMWa1BUtfAOmHJhdS63IoHVh3I0wdKPy8pIkSVKbsViTupr5L8PkfWHO9OKYoZvB+Btg4Frl5SVJkqQ2ZbEmdSVvz4KJe8PrM4pjVhwFY6+F/iuXl5ckSZLanMWa1FW8/ihM2gveero4ZpWxsPsV0GdoaWlJkiSpfVisSV3Bq/+BSfvA/BeLY9Y8AEZfAr36l5eXJEmS2k1DRycgqQUv3QITdq9dqI38FIy53EJNkiSpG7FYkzqz566HiXvBwteKYzb+Cuz8Z2jwQLkkSVJ3YrEmdVYzL4cp+8PiecUxW54A250J4b+yJElSd+NX8VJn9MRf4I7DITUWx2x7Bmx6TGkpSZIkqVwWa1Jn899fwd1fLe6PXrDjH2H9w8rLSZIkSaWzWJM6i5TgoZPhP98rjmnol834uNaB5eUlSZKkDmGxJnUGKcG934YZPyuO6T0IdrsSVhtfXl6SJEnqMBZrUkdLjXDXl+Cx3xXH9BkG466FlXcqLS1JkiR1LIs1qSM1LoLbPwtPXVAc038VGHcDDH9veXlJkiSpw1msSR1l8Ttwy6Ew65/FMQPXgvETYOgmpaUlSZKkzsFiTeoIi96CKR+EF24sjhm8IewxAQatW15ekiRJ6jQs1qSyLZgLk/eDl28tjlnhPTD+RhiwWmlpSZIkqXOxWJPKNP8lmLQ3vHpvccyK28O466DfiqWlJUmSpM7HYk0qy9uzYOJe8PrDxTGr7A67XwV9hpSXlyRJkjolizWpDG88DhP3hLeeKo5ZYz8YfSn0HlBaWpIkSeq8LNak9jb3QZi0F8x7vjhmnY/CzudDr77l5SVJkqROraGjE5C6tVemw4TdahdqGxwBu1xkoSZJkqSlWKxJ7WX2FLhpPCyYUxyzyddgh3OhoVdpaUmSJKlrsFiT2sNz18GkfWDRG8Ux7/khbPsLiCgvL0mSJHUZnrMmtbWZl8GtH4fGhcUx25wOm32jvJwkSZLU5VisSW3piT/DHUdAaiwICNjhd7Dh0WVmJUmSpC7IYk1qK//9Fdz91eL+6A07nwcjP1ZeTpIkSeqyLNak5ZUSPHQy/Od7xTEN/bJrqK21f3l5SZIkqUvr9MVaRHwIuKyi6QMppasjYhfgcOBV4B3g+JRSypcZDJwOzAFWA05MKT1dsc6jgC2BvsDNKaW/VvRtAnwLeAnoDxyXUnqnHTdRXVlKcO+3YcbPimN6D4LdroTVxpeXlyRJkrq8Tl2sRUQAHwD2ypsaU0oTI2Jt4Hxg65TSGxFxEvAd4KQ87kLgopTSJRGxKXBVRGyXUloYER8EDk4p7Zs/xtSIeCalNC0v8q4BxqWUZkbE0cCvAE8w0rulRrjrS/DY74pj+gyDcdfCyjuVlpYkSZK6h84+df+BwNvAf1JKE1JKE/P2/wdMSSk1zYv+T+C4iOgfEdsA++RtpJQeJitKP5zHngBcXPEYVwHH578fBcxMKc2sWO/hEbFW226WurzGhXDbYbULtf6rwJ43W6hJkiRpmXT2Yu1wsgLqxYg4NyKG5O17A09UxM0AVgBG5X3PVg1dnAHsERGrAVs1s+zuEdG7er0ppdnAa8DYttwodXGL58O0j8BTFxbHDFwb9pwKw7cqLy9JkiR1K526WEspHUBWhB0GHARcng+NXBt4pSL0TSABazXTB/B63td0hOyVqr5+wMotLLuUiDg6IqZHxPSXXnqp7m1TF7XoLbh5f5h1RXHM4A1hr2kwdOPy8pIkSVK306mLNYCU0ryU0gVkR73GA9uTFWbzKsIivy1qpg+y7Wzqo6q/6TloadnqvM5JKY1KKY0aMWJEvZulrmjBXJi4N7wwoThm2Jaw11QYtE5paUmSJKl76vTFWpOU0r+Bm4CRwCxgeEX3sPznrGb6yO839VHVP5zsvLg5LSyrnmz+bLhpHLx8a3HMSjvAHpNhwGplZSVJkqRurMsUa7mFwHTgWmCzivYNyabwb+pbPyL6VvXfkFJ6Efh3M8velFJqrF5vRKwCDAQmop7r7VkwYTd49d7imFXGwvgJ0G/FsrKSJElSN9dpi7WIWCkiPhcRA/L77wduTyk9AfwaGBsRffLwg4GfpZQWpZTuA24F9siX2wxYDDSdZHQ6cEDeF/nvp+R95wEbR8SKFev9fT7RiHqiNx6HG0fD6/8tjlljPxh7DfQZUhwjSZIk1Sny60h3OhGxLnA9MASYAlyTUjq/ov/9wP5kF69uJLvwddNFsUeQFWCPkw2b/EnFdPxExLfJJi4ZANySUrq0om8HsuuqzSQbXvmdli6KPWrUqDR9+vTl3GJ1OnMfhEl7wbzni2PW+SjsfD706lscI0mSpB4vIu5OKY2qa5nOWqx1JRZr3dAr02HSPrBgTnHMBkfA9mdDQ6/y8pIkSVKXtCzFWqcdBil1mNlT4KbxtQu1TY6FHc61UJMkSVK7sViTKj13XXZEbdEbxTFbngDb/hwiSktLkiRJPU/vjk5A6jRmXga3fhwaFxbHbPNz2Ozr5eUkSZKkHstiTQJ4/E9w55GQGgsCAnY4GzY8qtS0JEmS1HNZrEn/PQvuPqa4P3pnMz6OPLS8nCRJktTjWayp50oJHjwJ7vt+cUxDPxhzGaz5gfLykiRJkrBYU0+VEtz7LZhxWnFM70Gw+1Ww6rjy8pIkSZJyFmvqeVIj3PUleOx3xTF9hsG4a2HlnUpLS5IkSapksaaepXEh3P5ZeOrC4pj+q8C4G2H4VuXlJUmSJFWxWFPPsXg+3HIozLqiOGbg2jB+AgzduLy8JEmSpGZYrKlnWPQWTDkIXphQHDNko6xQG7ROaWlJkiRJRSzW1P0tmAuT94OXby2OGbZlNvRxwKqlpSVJkiTVYrGm7m3+bJi0D7x6b3HMSjvC2Gug34qlpSVJkiS1xGJN3dfbs2DinvD6f4tjVh0Hu10BfYaUl5ckSZLUChZr6p7eeCwr1N56ujhmjf1g9KXQe0B5eUmSJEmtZLGm7mfuAzBxL5j/QnHMOofALudDQ5/y8pIkSZLq0NDRCUht6pW7YMLutQu1DY6EXS60UJMkSVKnZrGm7mP2FLhpD1gwpzhmk2Nhh3OgoVd5eUmSJEnLwGJN3cNz12azPi56ozhmyxNg259DRGlpSZIkScvKc9bU9c28FG79BDQuLI7Z9hew6bHl5SRJkiQtJ4s1dW2P/wnuPBJSY0FAZMMeNzyy1LQkSZKk5WWxpq7rv2fB3ccU90dv2OUCWPeQ8nKSJEmS2ojFmrqelODBk+C+7xfHNPSDMZfDmvuVl5ckSZLUhizW1LWkBPd+C2acVhzTezDsfiWsOq68vCRJkqQ2ZrGmrqNxMUz/Ejx2dnFM3+Ew9lpYecfy8pIkSZLagcWauobGhXDbZ+Dpi4pj+q8K426A4VuVlpYkSZLUXizW1Pktng/TDoFnryyOGbg2jJ8AQzcuLy9JkiSpHVmsqXNb+CZMOQhevKk4ZshGWaE2aJ3S0pIkSZLam8WaOq8Fc2Hy++Hl24pjhm0J426EAauWlpYkSZJUBos1dU7zZ8PEvWHuf4pjVtoRxl4D/VYsLy9JkiSpJBZr6nzeegYm7QWv/7c4ZtVxsNsV0GdIeXlJkiRJJbJYU+fyxmMwcU946+nimDU+AGMuhV79y8tLkiRJKpnFmjqPuQ/AxL1g/gvFMeseCjufBw19ystLkiRJ6gANHZ2ABMArd8GE3WsXahscCTtfYKEmSZKkHsFiTR1v9hS4aQ9YMKc4ZtOvww7nQEOv8vKSJEmSOpDFmjrWs9fApH1g0RvFMVueCNucDhHl5SVJkiR1MM9ZU8eZeSnc8nFIi4pjtv0FbHpseTlJkiRJnYTFmjrG43+EO4+C1FgQENmwxw2PLDUtSZIkqbOwWFP5Hj4T7vlacX/0hl0ugHUPKS0lSZIkqbOxWFN5UoIHfwr3HV8c06s/jL4M1tyvvLwkSZKkTshiTeVICe49DmacXhzTezDsfhWsOra0tCRJkqTOymJN7a9xMUz/Ejx2dnFM3+Ew9jpYeYfy8pIkSZI6MYs1ta/GhXDbZ+Dpi4pj+q8K42+EYVuWlpYkSZLU2Vmsqf0sng/TDoFnryyOGbgOjJ8AQzcqLy9JkiSpC7BYU/tY+CZMOQhevKk4ZshGWaE2aJ3S0pIkSZK6Cos1tb0Fc2Hy++Hl24pjhm0F426AAauWlpYkSZLUlVisqW3Nnw0T94a5/ymOWWlHGHdtNqmIJEmSpGZZrKntvPUMTNwT3nikOGbVcbDbFdBnSHl5SZIkSV2QxZraxhuPwU17wNszi2PW+ACMuTS78LUkSZKkmho6OgF1A3MfgBvH1C7U1j0Udvu7hZokSZLUShZrWj6v3AUTdof5LxTHbHAU7HwBNPQpLy9JkiSpi7NY07J78Wa4aTwsmFMcs+k3YIezoaFXeXlJkiRJ3YDFmpbNs9fA5PfBojeLY7b8EWxzGkSUl5ckSZLUTTjBiOo381K45eOQFhXHbPtL2PRrpaUkSZIkdTcWa6rP43+EO4+C1FgQELDjubDBEaWmJUmSJHU3FmtqvYfPhHu+VtwfvWGXC2DdQ0pLSZIkSequLNbUspTgwZ/CfccXx/TqD6MvgzX3Ky8vSZIkqRuzWFNtKcG9x8GM04tjeg+G3a+CVceWlpYkSZLU3VmsqVjjYpj+RXjsnOKYvsNh7HWw8g7l5SVJkiT1ABZral7jQrjt0/D0X4tj+q8K42+EYVuWl5ckSZLUQ1is6d0Wz4dpH4VnryqOGbgOjJ8AQzcqLy9JkiSpB7FY09IWvglTDoQXJxbHDNk4K9QGrV1eXpIkSVIPY7GmJRa8CpPeD6/cXhwz7L0w7noYsGp5eUmSJEk9kMWaMvNnw8S9Ye5/imNW2gnGXZNNKiJJkiSpXVmsCd56BibuCW88Uhyz6njY7QroM7i8vCRJkqQezGKtp3vjMbhpD3h7ZnHMmvvD6L9lF76WJEmSVIqGjk5AHWjuA3DjmNqF2rofgzGXW6hJkiRJJbNY66leuQsm7A7zXyiO2eAo2Pl8aOhTXl6SJEmSAIu1nunFyXDTeFgwpzhms/8HO5wNDb1KS0uSJEnSEhZrPc2z18DkfWHRm8UxW/0Ytv4ZRJSXlyRJkqSlOMFIT/L03+DWT0BaVByz7Rmw6TGlpSRJkiSpeRZrPcXjf4Q7j4LU2Hx/NMAO58IGh5eblyRJkqRmWaz1BA+fAfccW9wfvWGXC2Hdj5aWkiRJkqTaLNa6s5TggZ/A/T8ojunVH0ZfDmu+v7y8JEmSJLXIYq27SgnuPQ5mnF4c03sw7P4vWHX38vKSJEmS1CoWa91R42KY/kV47JzimL7DYex1sPIO5eUlSZIkqdUs1rqbxoVw26fh6b8Wx/RfFcbfCMO2LC8vSZIkSXWxWOtOFs+HaR+FZ68qjhm4DoyfAEM3Ki8vSZIkSXWzWKsSEb2Bk4HFwGrAGSmlezs0qdZY+CZMORBenFgcM2TjrFAbtHZ5eUmSJElaJhZr7/Zz4LmU0qkRsSJwZ0Rsn1J6taMTK7TgVZj0fnjl9uKYYe+F8TdA/1XKy0uSJEnSMmvo6AQ6k4gYAXwJuBggpTQHeAT4fEfmVdO8F2HC2NqF2so7w56TLNQkSZKkLsRibWnj858zK9pmAHt0QC6tc/dXYe59xf2r7gHjbshmf5QkSZLUZVisLW1tYE5KKVW0vQ6sVR0YEUdHxPSImP7SSy+VluC7jPo/GLpp831rHgBj/wV9BpebkyRJkqTlZrG2tATMq2prABa9KzClc1JKo1JKo0aMGFFKcs3qPyKbhn/QyKXb1/04jLkMevXvkLQkSZIkLR+LtaXNAqrHCw7P2zuvgWtlszwOWD27v+HRsPN50NCnY/OSJEmStMycDXJpNwH9ImLNlNKzeduGwA0dmFPrDNkAxt0IMy+FLX8IER2dkSRJkqTlYLFWIaX0ckT8BTgA+G1ErARsCnysYzNrpWFbZDdJkiRJXZ7F2rsdC5wWEceTTSxyUErptQ7OSZIkSVIPY7FWJaX0FvDFjs5DkiRJUs/mBCOSJEmS1AlZrEmSJElSJ2SxJkmSJEmdkMWaJEmSJHVCFmuSJEmS1AlZrEmSJElSJ2SxJkmSJEmdkMWaJEmSJHVCFmuSJEmS1AlZrEmSJElSJ2SxJkmSJEmdkMWaJEmSJHVCFmuSJEmS1AlZrEmSJElSJ2SxJkmSJEmdUKSUOjqHLi8iXgKe7ug8cisDL3d0EmoX7tvuyf3aPblfuy/3bffkfu2+OtO+XTelNKKeBSzWupmImJ5SGtXReajtuW+7J/dr9+R+7b7ct92T+7X76ur71mGQkiRJktQJWaxJkiRJUidksdb9nNPRCajduG+7J/dr9+R+7b7ct92T+7X76tL71nPWJEmSJKkT8siaJEmSJHVCFmvdQERcHBGPRcSAZVh2rYh4MSJObqfc1o+IkyPi+YgY2R6PIUmSVKaI2Dgifh0RD3Z0Lmo7nXG/Wqwto4hYIy9C7lmGZXtHxKcj4vqIuDkipkTEvRHxx4jYYhnSmZvfGpdh2YXAq8Cby7Bsa2wGjAVWa6f1v0tkPhcRD0TEvIh4PCK+HhHRimX7RMR3I+KRiJgfEQ9GxGE14n8UEanqtkdF/4ERMT0ibo2IqyNi9YL1DMr/DtZo5Tb2iogvR8Qt+XLPVDz+71uzjq4oIj6R79e3Wto3Bcsf3sz+OqIqZlBE/CYi7oiIOyPixIjoVRWza0TcHhHT8ud/k4LHa4iIayJiyzpy/HhETM1fGx6ryHNCPdvalUXEShExMyJOaEXs5s3s06ZbY0SsVBU/vpm4H1f0bxYRk/N9e2dE7FTjsf8cEXvXsV37RMTEfP0PVTz+Y61dR2fX0vPbwrItvq/mr30/joi78v/RX0XEwGWJc193rIjYOyLOj4hfRMSXa8SNjoif5v/PKSL+mz+vM/LXyN9HxPol5z4c+ADwGWBQmY/d2dT7GlyxnPu1tVJK3uq8ATsDJ5AVOk/VuewawB3ArcD6Fe29ga8C84FjO3ob2/j5OglIwMiSHu844E/AaGAccG3++L9oxbL/B5wG7ATsC9yZL/vVZmJXAJ4BHq64TWTJuaAbAu8A4/P7/wCuL3jcPwHvq2Mb/wxMBVasaNsbeA74fUfv83bar4fl+2YUsD/w33zfHNDK5XsBD1Ttr3uBgRUxfYFbgL8AAfQBJlc+p/l+nwMcnt//JfAQ0KuZxzwR+Fwd23hCvl1rVbTtAMwAJnT0PihpPwdwdb5vT2hF/C/y1+Inq/btbGByM/E3VcXNANbJ+xqAR4Ef5fePydcztJn1fBY4uY7t+ky+ri0q2jYhey94rKOf9zbcf4XPbwvLtep9FbgUmAD0ze9fCNzQ9Lrb2jj3dYf+jawAXAZMq3yta8Vy9+avC8Mq2g4n+6L6FWDDDtiWO2v9vfaEW72vwe7XZcinoxPoyjfgrnp2JjCU7EPdc8Dwgpgf5H+0n+/o7WvD5+kESirWyD5sn17V1gu4G1gMrFZj2TWAb1e1DSEryF4D+lT1fR84qsb6vpZv94D8/lfyF5/BVXGHAafWsY0j8/Ue2EzfGODcjt7n7bRvP1h1f9v8efhVK5f/JPDTFmKOy/9ORlS0jcsfZ8/8/kH5/c3y+/vn97eoWtc44KI6tq8/MA84ppm+9YFrOnoflLSfv0tWlLdYrOX/738DVmmm72Lg6Kq2XYELaqxv6/xx983vb5nf368qbjPgeqB3Hdv1FPDLZtpXAO7o6Oe9jfZdzee3lesofF8FPprvj20r2tbL246sJ8593WF/I0PJ3o+nAf3rXHYyVR/q8/Z/5u1nd8D2TCn6e+0Jt3pfg92vy3ZzGOTyebvO+OPJXvjPSim9WhDzC7IhiadHRGlDB7uRocDPKhtSSovJXkwayAqdIv2AM6uWfQP4V77e/x3Kj4jBwBeB14oO8bNkWGrT8MteVe3kw+c+CXyvRl7VVsl/7lXdkVKaSvbtVreTUvpHVdOM/OcdLS0bEQ1kRcCzEbFmjdAvAf9OKb1U0XYr2RHSL+X3i/br4orHG0F2VO3zLeVWYShZwbZHnu//pJSeIPtw061FxFhgC+DXrVxkENkXW7Or1jMYeB/Zt/eVjgcej4gNCtbXmn07APgt2Yf+Ra3ME7L/2zER0a+yMaX0GnBFHevpzFp6fluj1vvql4GXgX83NaSUngSeZsn/Z2vj3Ncd40JgY+BjKaX5bbTOpve8jvjMtCynn3Qn9b4G18P92qSjq8WufCP7NqBVlTfZMMdXyL4l2KaF2OvzuK8DA4GPkxUMNwDbkx1enkX2TeHuwHnAQ82s50CyoXI354/9ItkH3EnAh8mOGh0J3Ab8MF9mfbIjQP8B/kh2vtlvyP5p7qBqOEv+GFPydc4CLgJWqoo5gRKHQRY8p18hexN+17c/rVj252RH1npVtH0z36YELADOB1avWm5d4C3gE2QfBCYB/6ro75+3tThEqGq9/YEX8se+qGibyL45fi2Pm082NGdrYGZF7vdWxN+Wt92d328Avk02LPC2fLmfsmQY0db538ZzZEMwvwVcl+f2RyqGEwErA5eQDRN9Kn+c0+vZ7ma2b3+yIjxaEfuRim1eTPb/tHFVzGZNz2kzy88gG/oYwOB8G7+X952X/7/0yu8H2Qey7ZZhm+7Nc7iBimHSVTGrkg0vadqW75G9mT1SsY0Pkx9FBv6at80GGvK2I/L9OpXs//a3LDkCvAlwMtn//GfJvpT4O9nrx9+p+DsHBpBdv2YyS4alXraM+3O1fD1DWHL0+IRlXNengKuq2raveH5Svu3bV8UEcB/50Wngx/nfd+Xf8u+A/Zchpyvyx50OvLdG3NMVOf4ub7uvou0pYOu8/Wf538DrwJp5W+FrMtlr0nFkIzx+SPbeciHwPHAjFf8T+XNxcr6upsefXiPvFp/fVj5Pk2nmfTX/u1gE3NpM37VkH66G1RHnvl7Gfb2sN5aMQmjxlIQafxuJpYfL9a3IubnTFWo9R/V+3hmY74d/53/fF5AdJXyqKm4I2RfvE4H7yYbff5kl752bkH0uujd/3O3JPmc8RjY0d1+ygv8kss+Dr9DCqJDOdqOZ12D367Lv1w7foV35Rn3F2qYseQEe0kLsWXncJcAIYDeyD9sPkR0d+CzZh7ktgD2Bl5r5o/oQ2ZvSTvn9dck+uM8lH4ZH9u3WN6j6UJT/MaX8D3G3vG042RG/8yridiZ782g6J2tHmhmWRuco1v5GRaFU57J3Av9X1bYdcDDwo/yfMJG90VcXAGPyfTUtf7EYXtH3G5oZytjKnMaQTQyT8v36g+b+rsgK+repON+J7JuwZ4FnqmJXI3txbDrH4ziyDwbDKu4n4EMVy3w1bzuvaduAPfK/vZsq4s4HvpD/HsApLEexRvai9wxwcCvjNyN7cf8u2Qty0/O2S9U6E/DzZpa/Pe9r2sYtgCvz/XoBsHZF7LdoZihjHXk+w5IC+5c0P7xkeP739lhFW9Nw30VN+7Ci/THy8xtZMkRs/ar736hY5oC87RqWnM+1JdlrwIyKv5EfUzGEl6ywq7tYy3P8F/Ce/P5Ilq9Yu47sm/vq/4UDgGPJ3uQT2RHTg6vi1iYrcG8hO89084q+Q1j2D5qrk73Bp3wf/QlYr5m4fmRv9vOpGHrHkiFBG1TF39PURitek4Gt8rZbgK0qtnkWWUG+ct52BHBxxXIfoMYQvtY+v614nibTfLHW9GXK5c30XZz3bdPaOPf1su/rZb2R/Y8nsteJX5O9fk4GPlvH30ZiSbG9JUvOb/0TVecNt/I5au3nnV5k50DewJIvtj6TL/tURVy/fD/9uKLtqDzurIq2dfK2O4HRedsQsgL+JbJio2/V8nu09T5prxvNvAa7X5d9v3b4Du3KN+or1nZhSbH2rokIqmJ/ksddX9H2DNk31w3NxN9SnQfZ0bTZVW1/yNc7qqJtI95drDXkbX+uWv5OKo7gkQ0nWczSk1zMoWoSDTq4WGPJEa5Nl2HZXfJtWrlGTB+y4iMBd7ZyvR8Gzqy4/xmyb3RuopUTjQBrsuTDR8pfCL7Iu0+0P5fsw0Dlfmo6N/K9FW1fBA6tuH8p2ZDApvtNb/zfqco7AeOqHvOSvH2X/P6D5Edv8/v9qTo/sJXb3EA2EUDTUcAEHFfnOoKsyGwkO1rYL2//RL6+HzezzNS8b40W1r0zFcUK2YeeSWQfXj/ZyvyGkRXyi/LHfINseFnfqrjv5f2VkxgclrcdWNH2/srnmux8sFcr7g+l6rwAsm8iE1UfooBT8/aP5/evBv5UFXPCMuzXnwCfrrg/kmUs1sjepOdSMXFMQdxH8v+LN2jFEXeyb2tvYskb7c5k345Oo5WTQuV/9z8m+wIlkR2VP4OqL1oq/hb3q2jbLW87pqJtc/IjMvn9Fl+TK57bE6se8wt5+3fz+78m+xBTOaKg1fuj3ue3YrnJNF+s7Zrnd34zfefnfbu0Ns593Xb7upXPR5Cdk/sqsF9+v2/+2An4fiv/NhLZl2dNo0umUnD0spXPUWs/7zQ9Z5tUbdMslv5Q/x2yzxv9qtZ3Vb78Dvn9XgWPezGQqto2YRne6zrqRitfg92vrd+vHb5Tu/KN+oq1pm/7EgWTi1TE/jyPu6ii7SkKZtVpLg+yowcLK/+wWHLS/moVbSNp5kNRwR/bZODJivuDyId6kX1z8GmyIzGTqpY7gY4t1q5mGY50kL2R3EPVxBY14s/Lt7PmzEVk30BXfhA4KH9hW51s0oxF1DGEjuxbpZsr/r7+UtW/Xd5+bEXbH8i+9a6c5fB6KiZRIfsGdv2K33+Ur+eHFTGfydvGVj3m0ZWPSTZ8MpEND9qxjfbr3mQvnvOoOjG5lcs3bU/TxCEH5/ffdcSPbDhTosYJ8WTf2k1hyRGs7cg+oL2HrLB+Gziojvw2Zck37Cn/m6n89n21fP1nVm3TGyx9JPVvLD1hysrkBV7++5fy9f+pImZs3vaZZp7z1PSYLPlm8GZgr2Xcj+8DzqlqG8myF2tfAS5sZezh+eMc2UJcX7IPs03/D2uRfUO7L9lr3yzga3XkuBbZMJnF+ePfz9LD7/qRfflyRUXbEfm+fYQlw27OJD9ikt9v8TW56LklG2mRmh4z3y+LyI78fJhmvihsq+e3apnJNF+sNU0o9K4jt2TnxaT8f6ZVce7rtt3XrXgeRuSPOaWqvR/ZEO13gEGt+NtIZDMtr0dW+M2j4NSS1jxHeV9rPu/cDbzc0t8r2ReTM5qJ+1T+OCe18Lh/5t0f6pv24w/ber+0x406XoPdr63br04wUp5HyYZdQVa41bJu/vPW5Xi8P5OdJ/fjyKxMNkTlnJTSC8ux3v9dqyyl9BbwckT8DvgVWUE5pzKmo0XEd4AXUkpnthj8br8C/pHePbFFkVPyn0UTjhARfcjO8flcSmlB3vx5YFpK6fmU0j3AE2QfglslpXRHSml3sm9o5wGHRcW13lJKd5PNsHZUnsOGZB/y/wZ8PCKGR8TOZEcFF1Ys9wywWkT8jexoVtMEF63Zv8/kP/vl6/oe2QeQbYHbI+LG5ZyEgJTSDWT7qD/Zh496nUZ2dK1pfz2e/2xu/60EvJRqnxB/NtkRrDn5/aOAR1JKD6SUniV7/lo94UhK6eGU0kFkE8m8Aowne1Nq6n+BrJj7VET0j4hhZN++n0E2ScmmEbEW8HaqmDAlpfQy2eUIzycr7m7Lu5Zlv55LNrx0VeCG/JpW27V2G3PHAYdHxKKmG9mwTYAf5G2717G+T5Cdv9AafyIbDlb4P5s7ley184n8/ifJ3mSvS9kkRNdQ376dlVI6nOychifJCvpvVvS/k+e2X37tsd5kXyZ8g2w0xD755Bfrp5Tuq1hueV6Tq/ftdWQzmr5DdpR9RkS8a1KjFrT2+W2Nlv4/F5MNDW5tXBH39bLt65Y0TdDyemVjvv3XkhXJzV6vsjkpmzDmCLLX/8vz62NVxyzvZ5TKuC3IJq1pyXpk5zVXa3pNe1eedeg0n61aUM9r8FLcr82zWCtJymaSOi+/+4GiuIjoSzYE4nWysfTL+nhnkp3vsgnZMMkLyYYbfHFZ11ktfzG/D7g6pfSZlNLNbbXuthARHyO7RtXnlmHZbwOLUko/rmOxZ8iOZj5SI+Zk4A8ppcoLozZ9k9TkZWrMWhkRIyPiE9XtKaWLyE4kh+xaZJV+B2wWEWPIPhyfRvb3MIDshfFIsmKj8nG+S/bG/d2U0v9rYbuqNb1wPVmR3x/JPnx8k2yo0s0RsbwXnWz6m3ul3gXzD15zyca0Q/aN92yyb+f/JyL6kx1ZvLFoXRHxFeCelFLlFyx17dd8Pe+aFTSlNIFsqAY0v1+Hkw05O4bsfNezyT6QfpmsYPxd1WMcRjbE5FcppS/mXxC0VnP79UqyN7zDgQ2AyS3MuFntCLLJaipv78/7fpffn96aFeVfAGxIdv5Bi1L29eazLPkbaG6d+5MdUf1bRfN6wNx8eVj2fXsP2blR8O59ezbZe/QRZB9+LiEbxvcq2b49lOx1vfIxluc1ubl9OzWltCPZ0f8BwLX1FOOteX7rWNdrZN+CN/eBfiOyc6xeb21cc4/hvl72fd2SlM2APYvsnJ5qz+c/ZzfTV2udfyf7sL4ecH5ELPWht40/o7xDdpS0JbOA1SNiSFV7U7H66HLk0OnV+xrcHPfru1msLZ+gvm86fkR2kuEXImKNgpgvkQ0XOCalVP0BtNWPFRFbkp1fc2BKaZeU0j4ppbNSNo19S8u29nFOBR5NKV3V2rzKEhEHk52/c2iqmHI5IlZvafsi4qtkRyi+XNVetM+ajAbOSAWXZYiI/cgmd7m4qut5svOUmqxA7W9+oeIIS5Wmb5Ufq2q/mKww+RHZEJcnUkq3kw3z/ArZB5RZFbkOIzvf4q9VhWWRoVX3dyIbxnN9vr4fA6SU5qeUTiebhGBN6vgmtcBIsg9fj7cUWC0iNiObBOXBPLdGsuJg+4hYsSJ0N7Jx6Ge/ey0QEduQTfRzalXXsuzXT0REr2bam92vKaWJZOeyfpVs1rgp+X68guzvf7t8P1c6g2y772whF2h+vzaSTcZQuV8Xp5T+BHyM7NvHHVux7qZteDI/+vi/G0u+GJidt73VytV9nGz428IWI7P8VyL7QHx9Qf/aZH+rx1Z1Lcu+/WAzb/RQvG8fJ/uC4AiyD/kXpZTmkR2F2ZesOL68al31vCY3t28hn2o7Io7PRwKQUrqC7AhvL7IZiFulpee3aDGK3+t+TfaB6b0Vj7Ex2WvJ2csQV5mr+5pl39et9CfgPRGxUVX7+mSzEM9qZplKTa+NlZ9d/x9Zcb4f2XD7Si0+R3V83pkGDIqIfZrpq8zn8jzP6i9UN2LJiJburK7X4Jz7tSWpE4xv7Yo3sjeTh8g+APetY7mNyabVvpelT2jsQzbsYR7wxapl+pO94c0in62mKo+HyY7EDahob5que2be/1D+mFcC+1TENU18cm5F28i8rXqikPvyx2makGEyFZNvsOSI4J15zmvl7b/P1zempH1zCNn44u3IjpJsSvbN/0FkR7VqLfsNsuGnW1QsuyXZP+jpecwIsqOkH65YbiuycwqavXAq2YeEidX7L+/7LNmRocH538fiyn3UTHzT/jmbpU+wXY1suOMkmpnEJs9vMUtP2fzZfF17VMX2J5scYDLZC1bTxB6JbIrbkWTDbD+Tt11X8XexFdm5ZJ+r+ts5quL+18g+BL3r+SjY5iH54x7IknM4Ns23d+MWlu1Ldo7eUSyZXn8k2SQeQ6tiB5AdBTg1vz+IbJjgb2vkNZmKc8Iq+saTHWldh+yb7Ncrn5OC9SWyQmjNirYVyM67fJCqC6rn/cdW70OWXMj7iGbinyIrhvrn9z+Yx/4NWDG/jc3b7gVWyOPWITtKcnLFuv5Fdj25puf1ILIifa3l/B8eyTKcs0b2WrdbQd8vyY4qN233ymTf3jabK9kb83VUvE5X9G1C9ga9S/739Xjl81KwvqfIjmhWvu73J3t9fK65PCr2zREVbRuQFczNTYQzmRZekyue21kseY1ekex/9K8V6/q/PLem52trsm+RRxVsX13Pb8E6ar6vkr0OTSD78inIXoMuJ/v/iHrj3NfLtq+X4/96ENkH8IkVj9WUd81zmfNteibfng9U9a3PksvUnEw+sUWdz1FLn3e2I3tPfLjiuVwr39dvkRX0fcherx8je3/bKI8bRvZe9fWK9a/NkuG1lY97Q95eeYmUnfK239V6jjrDjRqvwe7XZd+vHb5ju+KNrBh4mCUn/j9BVYHVij/OY8gq+qapa+8h+1a/eur3HciGKjQ91jPA7nnfYJZMD5zyuKapQrcmG1LQdOJuY0XcQrIPuh9hyfWaGskmMNgr/2Nsir2b7ChT5eM8nq9/O7IPkE+SzTj4IbJhc8+TDbfsTzaUo+nE6jm0ciat5dg3n6h4vOZuh9ZY9js1lkssuQzCELLzFt4iu47Hb4BDaqy3F9mY/M1qxHw/f67vBb7SwjaOrMhpAdlkMneQFRk/pmASDLJzJS+sahsA3FIQ/2mymZnuIBteNzbf99OBA/KYz+R5nEr2t3xbvh3V06Y/kMc9TTYJx7VUTJPdiv26Mtlw3nlkR5IuJPu2rTWz+DXk8a+RDVU4l4rCrZn4VcgKl9vybf86BddyIyvax9V47KPI/rfvIZvxsOaJ+xX7dXH+nN1O9uH1LAomJiIrBG9qpn0azczGRTaZwJNk/7u/JTsqeAdZAffJ/Pkam+fxa7LXp1vyv/VjqtbVNBX38/l+nQzs2gb/x01/4yfUscx2ZF9OFe2r08m+FJlFdk7vsUX/K3n8T4HDavQfkP8vTKfiOnU14p+q2L//JftS6KE8l6KCsXf+3Pepar+yuWVo3Wty03N7PlmBMi3/W/sRS09g83953Ct5zC3UuOZYvc9vM8u36n2V7AP/2WQfku7I91NzhV2r4tzX9e/r5fzfHp7vl/vICtpraeF6fGSzF8+qeE7fpup9i2xilKb+N8ku09LSc7Q/rfy8kz/GLmTvC3PIzsn6Xv5cTSO7ZEvTtS1Xy/f1s2Rfnl7H0l/u7pX3VT7uCJZcZzORvfd+luwI0xyWvC9c2h77pY32bc3XYPfrsu/Xpm+o1c1ExDlkk2NcW9HWm+yD6OnAP9PS4/KlukXEZ8iGtoxLKU3u2GzUViJiLNmb0WdTSn/u0GTUpiJiJNmHnBNTSid0bDZqT+5rqXvwnLVuKP8A/f7KQg0gpbQopfQc2Tda05pbVqpTV5mdSvVxv3Zf7tuew30tdQMWa93TSmRTrh8dEf2aGvMp/PcD7suLNml5NU26slqHZqG25n7tvty3PYf7WuoGHAbZTeWzIX6BbFKA18nGET9GdsHkhzoyN3UPETEJGEN2Tt6bZCesH92xWWl5RcR5ZOcP9SU7J/LGlFLh5UbUdUTESWQzhw4iO0/5brLznBfUXFBdjvta6j4s1iRJkiSpE3IYpCRJkiR1QhZrkiRJktQJWaxJkiSppojYLiJGdHQebSkiGiLiwIiYHBE/7Oh82kNE7J5fukldlMWaJEmSmpUXNMcDa6eUXurofNrYrmQXUd6d7nupg0eB30XEuh2diJaNxZokSZKK/BqYkVL6Z0cn0tZSSlOBX3R0Hu0pv1TTt4CLI2L1js5H9bNYkyRJ0rtExGHAJimlyzo6l3Y0v6MTaG8ppVeAnwOXR4Sf/bsYd5gkSZKWEhGDgNOB33d0Lu2ssaMTKMk/gPWBj3d0IqqPxZokSZKqfRoYAVxX3RERh0bE1Ii4PSLmR0SKiMEV/aMjYmJETIiImRFxdUSMzPvWjIjj8mUnRMTGEXFyRPwnImZFxGciYlBEHB8RV0TEKxHx++pJMiJit4j4R0RMiYiXIuLsvMCsKSK2jIhr8se/HTiiIK7F9efrujrf1pkR8WpEPJlPWPKTiFg/Ir4fEQ/m2/XdiHgtIi6uWMcHI+JfeT7PR8RJzWxrzZiI2CYibsxzfSXfHx+oXEdKaTFwM/Cdlp4jdTIpJW/evHnz5s2bN2/e/ncDJgHPNtO+CdmkFQPz++sBLwCD8/sjgbeAw/P765ANNbyqYh3985jHgX3ztj7AHXnst4EhefteQAKOqFj+fcBtwLD8/vuBRcBFLWzTlsBrwJH5/X7A9fn6T6hn/WRHqeYC36rYptvzdY3O2zYFfpK3XQ0cAPwGOCvvPwq4Cuif3/9cHntSxePUjCGbGGUmsFl+f2C+7z7QzPb/IF92g47++/LW+ptH1iRJkvQ/+XlNo4Anm+neClgBGASQUnqS7HyolPdvQVYw3J33zwQeAjZuWkFKaT4wB3gmpXRt3raQrMjoB1ycUnojD5+S/9yuIodfAT9JKc3Nl70GuBf4WERsWGPTfg88lFL6fb7cO2RDPau1Zv2fzp+Hqyq26dd5305528P5NgHcmlK6MqX0xZTSV/OjdKcB386XJaV0NvAK8I2IGNiaGGBlYG1glbz/bbJid3Ez2/V4/nP3Gs+ROhmvuyBJkqRKKwKDgdeb6ZtKdhrN/RHxM+CclNJpFf3XA7umlP4TEf3IpsYfQXZkqlJzxcS7JvtIKb0TEQADAPJiaUPgBxHxzYrQwcDTZEf2HqteT0RsCexAVlhWerQqrrXrH5q3r05WjEJWgAI8U7Fc03Y+W/W4O5MVe7+JiFTRPhd4k+yI5FotxaSUHo6IW4DrI+Js4OcppTto3mv5zzUK+tUJWaxJkiSpUp/857sm30gpvRAR2wGnkh2VOj4iTkgpnZn3L4qIRyLiNLKC43zgKbKjP8uj6Tpoq+Y/v5FSmlbH8lvkP19uIa61678Q+BLw/Yi4A3gHOAy4H/hnK/JpepxPpJRmNReQP881Y3J7A8cDXwW+GBF/yPN/qypuXv5zKOoyHAYpSZKkSi+TDWtsdsKOlNLTKaVDgW2AB4AzIuIYgIh4L9mRpqdSSoeklP5F80fRltXc/OeHqjsiYnBErF+w3Dv5z5aKxlatP6U0HTgk77oRuBaYBeyWD69sSa3HWSMiVm5lDCmlt1NK3yE7j+7PZOe1XdDMYw6oemx1ARZrkiRJ+p/8/LGnWHL0538i4kN5QUZK6T/AHmQTXOyRh/wQaEgp/bp62TYyg2xI4TER8e18qCURsQLZOWnzCpa7naxo3C8i+jbT3/SZuFXrj4ghwLHAPimlnVNKe6aUvtF0nlszour+rfm6To6IIyOiV77e1YDfkQ1BbTEmIlZuKpRTSi+mlI4CLmbJ/qg0vGIb1UVYrEmSJKnadcB68e6LKAfw+4hYPb/fl+zz5MT8/uvAsIjYGCAitiI74jMwIhry6ewHAisBq0Z+Qlqu6VyqpnU3FSYAqwGklBrJiiSAk4E3IuIpYDbwaErp+eY2Jm8/A1gXOK2p8AHG5D/Xj4h+daz/4/myz0bEfyPioYi4LyImRcSXK7arKf8tq/J5lWx2xgHAucCb+ePMAq5IKS1oTUy+uh9GxI758xVkM1NO5N02ITt3cGpzz5E6p0gptRwlSZKkHiMidiY7srN1fgStqf3DwKVkk4HcnzdfDvwspZQiYj2yIzvrkBV8U4CtgU+RzWw4DfgL2ZT/kA2ZPJDsSNE4ssLvVbLz4Z4CfsGSI3x3ppSaipL9gBPJiqCXgN+STWdf+ME2L2S+RXau2RvALWSzPP6EbGKUK1JKf23N+iNiRWAyWdE5nKxAqiw8j8qfg6+zZDjpLSml0VU5fRo4DtiI7AjlqSmlc1sbkw+FfIls2OqD+XY9CHyz+ihfRFwHzEspfbDoOVLnY7EmSZKkd4mIa8imnP9JR+fS2UTEJ4Et8nPFmtoayGZv/CywYUrpix2VX7WIGEp2PbxdU0r/7uh81HoWa5IkSXqXiFiX7Dpio1NKzU3j3yPlQzzvJyvWmrtMwHhgaErpn2XnViQifgD0Syl9r6NzUX08Z02SJEnvklJ6GvgC2WyPvVqK70GGA72ArzfNyNgkIrYhO6r2z45IrDkRsQPZLJjHd3Quqp9H1iRJklQoIjYBDgZ+lVJ6s6Pz6QwiYhTZRCTbkV0WYCbZRbOvSild35G5VYqIfcjOnft9rfP51HlZrEmSJKmmfHKOPhUzEKoLiIj+KaX5HZ2Hlp3FmiRJkiR1Qp6zJkmSJEmdkMWaJEmSJHVCFmuSJEmS1AlZrEmSJElSJ2SxJkmSJEmd0P8HB8+oVM7zJNsAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 1008x648 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "def _get_number_of_different_edges(original, perturbed):\n",
    "    edges_removed_from_original = 0\n",
    "    for edge in original.edges():\n",
    "        if not perturbed.has_edge(*edge):\n",
    "            edges_removed_from_original += 1\n",
    "    return edges_removed_from_original\n",
    "\n",
    "num_diff_edges = []\n",
    "for Q in perturbed_networks:\n",
    "    num_diff_edges.append(nx.difference(G, Q).number_of_edges())\n",
    "\n",
    "fig = plt.figure(figsize=(14, 9))\n",
    "sns.lineplot(x=['1 Original', '2 25% Swaps', '3 50% Swaps', '4 75% Swaps', '5 100% Swaps', '6 Random\\n(same degrees)', '7 Random'], y=num_diff_edges, lw=6, color='orange', ms=20)\n",
    "plt.ylabel('# of differing edges', size=20)\n",
    "_ = plt.xticks(size=20)\n",
    "_ = plt.yticks(size=15)\n",
    "#_ = plt.gca().set_xticklabels(labels=['Original', '50% Swaps', '100% Swaps', 'Random'])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Write network perturbations back to HDF5"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [],
   "source": [
    "def write_hdf5_container(fname, A, F, node_names, y_train, y_val, y_test, train_mask, val_mask, test_mask, feature_names, features_raw):\n",
    "    f = h5py.File(fname, 'w')\n",
    "    string_dt = h5py.special_dtype(vlen=str)\n",
    "    f.create_dataset('network', data=A, shape=A.shape)\n",
    "    f.create_dataset('features', data=F, shape=F.shape)\n",
    "    f.create_dataset('gene_names', data=node_names, dtype=string_dt)\n",
    "    f.create_dataset('y_train', data=y_train, shape=y_train.shape)\n",
    "    f.create_dataset('y_val', data=y_val, shape=y_val.shape)\n",
    "    f.create_dataset('y_test', data=y_test, shape=y_test.shape)\n",
    "    f.create_dataset('mask_train', data=train_mask, shape=train_mask.shape)\n",
    "    f.create_dataset('mask_val', data=val_mask, shape=val_mask.shape)\n",
    "    f.create_dataset('mask_test', data=test_mask, shape=test_mask.shape)\n",
    "    f.create_dataset('feature_names', data=np.array(feature_names, dtype=object), dtype=string_dt)\n",
    "    f.create_dataset('features_raw', data=features_raw, shape=features_raw.shape)\n",
    "    f.close()\n",
    "\n",
    "    print (\"Container written to {}\".format(fname))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Container written to /project/gcn/diseasegcn/data/network_perturbation_CPDB_rev1/CPDB_0_perturbation.h5\n",
      "Container written to /project/gcn/diseasegcn/data/network_perturbation_CPDB_rev1/CPDB_0_25_perturbation.h5\n",
      "Container written to /project/gcn/diseasegcn/data/network_perturbation_CPDB_rev1/CPDB_0_5_perturbation.h5\n",
      "Container written to /project/gcn/diseasegcn/data/network_perturbation_CPDB_rev1/CPDB_0_75_perturbation.h5\n",
      "Container written to /project/gcn/diseasegcn/data/network_perturbation_CPDB_rev1/CPDB_1_perturbation.h5\n",
      "Container written to /project/gcn/diseasegcn/data/network_perturbation_CPDB_rev1/CPDB_Random_degreepreserved_perturbation.h5\n",
      "Container written to /project/gcn/diseasegcn/data/network_perturbation_CPDB_rev1/CPDB_Random_powerlaw_perturbation.h5\n"
     ]
    }
   ],
   "source": [
    "perturbation_folder = '/project/gcn/diseasegcn/data/network_perturbation_{}_rev1/'.format(network_name)\n",
    "\n",
    "if not os.path.isdir(perturbation_folder):\n",
    "    os.mkdir(perturbation_folder)\n",
    "else:\n",
    "    for file in os.listdir(perturbation_folder):\n",
    "        os.remove(os.path.join(perturbation_folder, file))\n",
    "\n",
    "for i in range(len(swapping_percentages)):\n",
    "    fname = os.path.join(perturbation_folder, '{}_{}_perturbation.h5'.format(network_name, str(swapping_percentages[i]).replace('.', '_')))\n",
    "    write_hdf5_container(fname, nx.to_pandas_adjacency(perturbed_networks[i], nodelist=node_names[:, 1]), features, node_names,\n",
    "                         y_train, y_val, y_test,\n",
    "                         train_mask, val_mask, test_mask,\n",
    "                         feature_names, features\n",
    "                        )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "True"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "G_test = nx.to_pandas_adjacency(perturbed_networks[i], nodelist=node_names[:, 1])\n",
    "(G_test.index == node_names[:, 1]).all()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(13627, 13627)"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "G_test.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Feature Perturbations\n",
    "Next, we also want to shuffle around the features to investigate how much learning can happen if the structure in the features is lost gradually."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Swapped 25.0% of the features\n",
      "Swapped 50.0% of the features\n",
      "Swapped 75.0% of the features\n",
      "Swapped 100% of the features\n",
      "Created random features\n",
      "Created random features\n"
     ]
    }
   ],
   "source": [
    "def _swap_row(matrix, idx_from, idx_to):\n",
    "    tmp = matrix[idx_from]\n",
    "    matrix[idx_from] = matrix[idx_to]\n",
    "    matrix[idx_to] = tmp\n",
    "\"\"\"\n",
    "def perturb_features(features, percentage, max_tries=100):\n",
    "    n_swaps = percentage * features.shape[0]\n",
    "    print (n_swaps)\n",
    "    available_nodes = list(np.arange(features.shape[0]))\n",
    "    for swap in range(int(n_swaps)):\n",
    "        found_new_swap = False\n",
    "        num_tries = 0\n",
    "        while not found_new_swap or num_tries < max_tries:\n",
    "            fro, to = np.random.randint(features.shape[0], size=2)\n",
    "            if not fro in already_perturbed and not to in already_perturbed:\n",
    "                found_new_swap = True\n",
    "                _swap_row(features, fro, to)\n",
    "                already_perturbed.append(fro)\n",
    "                already_perturbed.append(to)\n",
    "            else:\n",
    "                num_tries += 1\n",
    "    print (len(already_perturbed))\n",
    "    return features, already_perturbed\n",
    "\"\"\"\n",
    "\n",
    "def perturb_features(features, percentage, max_tries=100):\n",
    "    n_swaps = percentage * features.shape[0]\n",
    "    available_nodes = list(np.arange(features.shape[0]))\n",
    "    for swap in range(int(n_swaps)):\n",
    "        fro = random.choice(available_nodes)\n",
    "        available_nodes.remove(fro)\n",
    "        to = random.choice(np.arange(features.shape[0]))\n",
    "        _swap_row(features, fro, to)\n",
    "    return features\n",
    "\n",
    "\n",
    "perturbed_features = [features]\n",
    "for percentages in swapping_percentages[1:]:\n",
    "    if type(percentages) == float or type(percentages) == int:\n",
    "        perturbed_features.append(perturb_features(features.copy(), percentages))\n",
    "        print (\"Swapped {}% of the features\".format(percentages*100))\n",
    "    else:\n",
    "        perturbed_features.append(np.random.randn(features.shape[0], 1))\n",
    "        #perturbed_features.append(np.random.randn(*features.shape))\n",
    "        print (\"Created random features\")\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1008x648 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "num_diff_rows = []\n",
    "for F in perturbed_features:\n",
    "    num_diff_rows.append( F.shape[0] - (F == features).all(axis=1).sum() )\n",
    "\n",
    "fig = plt.figure(figsize=(14, 9))\n",
    "sns.lineplot(x=['1 Original', '2 25% Swaps', '3 50% Swaps', '4 75% Swaps', '5 100% Swaps', '6 Random\\n(same degrees)', '7 Random'],\n",
    "             y=num_diff_rows, lw=6, color='orange', ms=20)\n",
    "plt.ylabel('# of differing nodes', size=20)\n",
    "_ = plt.xticks(size=20)\n",
    "_ = plt.yticks(size=15)\n",
    "#_ = plt.gca().set_xticklabels(labels=['Original', '50% Swaps', '100% Swaps'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(537, 199, 60)"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_train.sum(), y_test.sum(), y_val.sum()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(13627,) (13627,)\n",
      "Computed measures for perturbed network: 0\n",
      "(13627,) (13627,)\n",
      "Computed measures for perturbed network: 1\n"
     ]
    },
    {
     "ename": "KeyboardInterrupt",
     "evalue": "",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mKeyboardInterrupt\u001b[0m                         Traceback (most recent call last)",
      "\u001b[0;32m<ipython-input-16-1999e535780b>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m      3\u001b[0m     \u001b[0;31m# compute node degrees from the network\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      4\u001b[0m     \u001b[0mnodes\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mpd\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mDataFrame\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnode_names\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcolumns\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'ID'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'Name'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mset_index\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'ID'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 5\u001b[0;31m     \u001b[0mdegrees\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnx\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mto_pandas_adjacency\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mG\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mperturbed_networks\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mp\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnodelist\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mnodes\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mName\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msum\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0maxis\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m      6\u001b[0m     \u001b[0;32massert\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdegrees\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mindex\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0mnodes\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mName\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mall\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      7\u001b[0m     \u001b[0mnodes\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'Degree'\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0marray\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdegrees\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;31m# same ordering as the node names\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m/pkg/python-3.7.7-0/lib/python3.7/site-packages/pandas/core/generic.py\u001b[0m in \u001b[0;36mstat_func\u001b[0;34m(self, axis, skipna, level, numeric_only, min_count, **kwargs)\u001b[0m\n\u001b[1;32m  11180\u001b[0m             \u001b[0mskipna\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mskipna\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m  11181\u001b[0m             \u001b[0mnumeric_only\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mnumeric_only\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m> 11182\u001b[0;31m             \u001b[0mmin_count\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mmin_count\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m  11183\u001b[0m         )\n\u001b[1;32m  11184\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m/pkg/python-3.7.7-0/lib/python3.7/site-packages/pandas/core/frame.py\u001b[0m in \u001b[0;36m_reduce\u001b[0;34m(self, op, name, axis, skipna, numeric_only, filter_type, **kwds)\u001b[0m\n\u001b[1;32m   7905\u001b[0m             \u001b[0mvalues\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mvalues\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   7906\u001b[0m             \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 7907\u001b[0;31m                 \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mf\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mvalues\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m   7908\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   7909\u001b[0m                 \u001b[0;32mif\u001b[0m \u001b[0mfilter_type\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;34m\"bool\"\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0mis_object_dtype\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mvalues\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0maxis\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m/pkg/python-3.7.7-0/lib/python3.7/site-packages/pandas/core/frame.py\u001b[0m in \u001b[0;36mf\u001b[0;34m(x)\u001b[0m\n\u001b[1;32m   7863\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   7864\u001b[0m         \u001b[0;32mdef\u001b[0m \u001b[0mf\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 7865\u001b[0;31m             \u001b[0;32mreturn\u001b[0m \u001b[0mop\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0maxis\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0maxis\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mskipna\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mskipna\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwds\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m   7866\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   7867\u001b[0m         \u001b[0;32mdef\u001b[0m \u001b[0m_get_data\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0maxis_matters\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m/pkg/python-3.7.7-0/lib/python3.7/site-packages/pandas/core/nanops.py\u001b[0m in \u001b[0;36m_f\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m     67\u001b[0m             \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     68\u001b[0m                 \u001b[0;32mwith\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0merrstate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0minvalid\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m\"ignore\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 69\u001b[0;31m                     \u001b[0;32mreturn\u001b[0m \u001b[0mf\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m     70\u001b[0m             \u001b[0;32mexcept\u001b[0m \u001b[0mValueError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     71\u001b[0m                 \u001b[0;31m# we want to transform an object array\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m/pkg/python-3.7.7-0/lib/python3.7/site-packages/pandas/core/nanops.py\u001b[0m in \u001b[0;36mnansum\u001b[0;34m(values, axis, skipna, min_count, mask)\u001b[0m\n\u001b[1;32m    491\u001b[0m     \u001b[0;32melif\u001b[0m \u001b[0mis_timedelta64_dtype\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdtype\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    492\u001b[0m         \u001b[0mdtype_sum\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfloat64\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 493\u001b[0;31m     \u001b[0mthe_sum\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mvalues\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msum\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0maxis\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdtype\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mdtype_sum\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    494\u001b[0m     \u001b[0mthe_sum\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0m_maybe_null_out\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mthe_sum\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0maxis\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmask\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mvalues\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mshape\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmin_count\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mmin_count\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    495\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m/pkg/python-3.7.7-0/lib/python3.7/site-packages/numpy/core/_methods.py\u001b[0m in \u001b[0;36m_sum\u001b[0;34m(a, axis, dtype, out, keepdims, initial, where)\u001b[0m\n\u001b[1;32m     36\u001b[0m def _sum(a, axis=None, dtype=None, out=None, keepdims=False,\n\u001b[1;32m     37\u001b[0m          initial=_NoValue, where=True):\n\u001b[0;32m---> 38\u001b[0;31m     \u001b[0;32mreturn\u001b[0m \u001b[0mumr_sum\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0ma\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0maxis\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdtype\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mout\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mkeepdims\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0minitial\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mwhere\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m     39\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     40\u001b[0m def _prod(a, axis=None, dtype=None, out=None, keepdims=False,\n",
      "\u001b[0;31mKeyboardInterrupt\u001b[0m: "
     ]
    }
   ],
   "source": [
    "all_deg_dfs = []\n",
    "for p in range(len(swapping_percentages)):\n",
    "    # compute node degrees from the network\n",
    "    nodes = pd.DataFrame(node_names, columns=['ID', 'Name']).set_index('ID')\n",
    "    degrees = nx.to_pandas_adjacency(G=perturbed_networks[p], nodelist=nodes.Name).sum(axis=0)\n",
    "    assert ((degrees.index == nodes.Name).all())\n",
    "    nodes['Degree'] = np.array(degrees) # same ordering as the node names\n",
    "    \n",
    "    # compute the label information\n",
    "    y_pos = np.logical_or(np.logical_or(y_train, y_test), y_val).reshape(-1)\n",
    "    y_neg = np.logical_and(np.logical_or(np.logical_or(train_mask, test_mask), val_mask), np.logical_not(y_pos).reshape(-1))\n",
    "    print (y_pos.shape, y_neg.shape)\n",
    "    nodes['Label'] = 'unknown'\n",
    "    nodes.loc[y_pos, 'Label'] = 'Cancer Gene'\n",
    "    nodes.loc[y_neg, 'Label'] = 'Non Cancer Gene'\n",
    "    nodes['Network'] = str(swapping_percentages[p])\n",
    "    \n",
    "    # compute betweenness centrality\n",
    "    if nx.algorithms.connected.is_connected(perturbed_networks[p]):\n",
    "        betweenness = nx.algorithms.centrality.approximate_current_flow_betweenness_centrality(G=perturbed_networks[p])\n",
    "        betweenness_df = pd.DataFrame.from_dict({key: [betweenness[key]] for key in betweenness}).T\n",
    "        betweenness_df.columns = ['Betweenness']\n",
    "        all_measures = nodes.join(betweenness_df, on='Name')\n",
    "    else:\n",
    "        nodes['Betweenness'] = np.nan\n",
    "        all_measures = nodes\n",
    "    \n",
    "    print (\"Computed measures for perturbed network: {}\".format(p))\n",
    "    all_deg_dfs.append(all_measures)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(537, 199, 60)"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_train.sum(), y_test.sum(), y_val.sum()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "ename": "NameError",
     "evalue": "name 'all_deg_dfs' is not defined",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mNameError\u001b[0m                                 Traceback (most recent call last)",
      "\u001b[0;32m<ipython-input-32-96d76fbf119e>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m      1\u001b[0m \u001b[0mfig\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfigure\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfigsize\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m15\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m10\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mall_degs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mpd\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mconcat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mall_deg_dfs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m      3\u001b[0m \u001b[0msns\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mboxplot\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdata\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mall_degs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m'Network'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m'Degree'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mhue\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m'Label'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      4\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlegend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfontsize\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m25\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      5\u001b[0m \u001b[0;31m#plt.ylim([-0.0003, 0.01])\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;31mNameError\u001b[0m: name 'all_deg_dfs' is not defined"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 1080x720 with 0 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig = plt.figure(figsize=(15, 10))\n",
    "all_degs = pd.concat(all_deg_dfs)\n",
    "sns.boxplot(data=all_degs, x='Network', y='Degree', hue='Label')\n",
    "plt.legend(fontsize=25)\n",
    "#plt.ylim([-0.0003, 0.01])\n",
    "#plt.ylim([-5, 400])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Write feature perturbations back to HDF5"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Container written to /project/gcn/diseasegcn/data/feature_perturbation_CPDB_rev1_v3/CPDB_0_feature_perturbation.h5\n",
      "Container written to /project/gcn/diseasegcn/data/feature_perturbation_CPDB_rev1_v3/CPDB_0_25_feature_perturbation.h5\n",
      "Container written to /project/gcn/diseasegcn/data/feature_perturbation_CPDB_rev1_v3/CPDB_0_5_feature_perturbation.h5\n",
      "Container written to /project/gcn/diseasegcn/data/feature_perturbation_CPDB_rev1_v3/CPDB_0_75_feature_perturbation.h5\n",
      "Container written to /project/gcn/diseasegcn/data/feature_perturbation_CPDB_rev1_v3/CPDB_1_feature_perturbation.h5\n",
      "Container written to /project/gcn/diseasegcn/data/feature_perturbation_CPDB_rev1_v3/CPDB_Random_degreepreserved_feature_perturbation.h5\n",
      "Container written to /project/gcn/diseasegcn/data/feature_perturbation_CPDB_rev1_v3/CPDB_Random_powerlaw_feature_perturbation.h5\n"
     ]
    }
   ],
   "source": [
    "perturbation_folder = '/project/gcn/diseasegcn/data/feature_perturbation_{}_rev1_v3/'.format(network_name)\n",
    "\n",
    "if not os.path.isdir(perturbation_folder):\n",
    "    os.mkdir(perturbation_folder)\n",
    "else:\n",
    "    for file in os.listdir(perturbation_folder):\n",
    "        os.remove(os.path.join(perturbation_folder, file))\n",
    "\n",
    "for i in range(len(swapping_percentages)):\n",
    "    fname = os.path.join(perturbation_folder, '{}_{}_feature_perturbation.h5'.format(network_name, str(swapping_percentages[i]).replace('.', '_')))\n",
    "    write_hdf5_container(fname, adj, perturbed_features[i], node_names,\n",
    "                         y_train, y_val, y_test,\n",
    "                         train_mask, val_mask, test_mask,\n",
    "                         feature_names, perturbed_features[i]\n",
    "                        )"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Perturb both, network and features"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Container written to /project/gcn/diseasegcn/data/netfeat_perturbation_CPDB_rev1_v2/CPDB_0_networkfeature_perturbation.h5\n",
      "Container written to /project/gcn/diseasegcn/data/netfeat_perturbation_CPDB_rev1_v2/CPDB_0_25_networkfeature_perturbation.h5\n",
      "Container written to /project/gcn/diseasegcn/data/netfeat_perturbation_CPDB_rev1_v2/CPDB_0_5_networkfeature_perturbation.h5\n",
      "Container written to /project/gcn/diseasegcn/data/netfeat_perturbation_CPDB_rev1_v2/CPDB_0_75_networkfeature_perturbation.h5\n",
      "Container written to /project/gcn/diseasegcn/data/netfeat_perturbation_CPDB_rev1_v2/CPDB_1_networkfeature_perturbation.h5\n",
      "Container written to /project/gcn/diseasegcn/data/netfeat_perturbation_CPDB_rev1_v2/CPDB_Random_degreepreserved_networkfeature_perturbation.h5\n",
      "Container written to /project/gcn/diseasegcn/data/netfeat_perturbation_CPDB_rev1_v2/CPDB_Random_powerlaw_networkfeature_perturbation.h5\n"
     ]
    }
   ],
   "source": [
    "# can just use the already perturbed networks/features and make containers with their combinations...\n",
    "perturbation_folder = '/project/gcn/diseasegcn/data/netfeat_perturbation_{}_rev1_v2/'.format(network_name)\n",
    "\n",
    "if not os.path.isdir(perturbation_folder):\n",
    "    os.mkdir(perturbation_folder)\n",
    "else:\n",
    "    for file in os.listdir(perturbation_folder):\n",
    "        os.remove(os.path.join(perturbation_folder, file))\n",
    "\n",
    "for i in range(len(swapping_percentages)):\n",
    "    fname = os.path.join(perturbation_folder,\n",
    "                         '{}_{}_networkfeature_perturbation.h5'.format(network_name, str(swapping_percentages[i]).replace('.', '_'))\n",
    "                        )\n",
    "    write_hdf5_container(fname, nx.to_pandas_adjacency(perturbed_networks[i], nodelist=node_names[:, 1]),\n",
    "                         perturbed_features[i], node_names,\n",
    "                         y_train, y_val, y_test,\n",
    "                         train_mask, val_mask, test_mask,\n",
    "                         feature_names, perturbed_features[i]\n",
    "                        )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
